虽然我很确定这个问题有一个简单的解决方案,但这里的问题是,第二个VC与第一个VC没有任何区别。第二个VC是当你点击tableViewCell时得到的。您点击的单元格(使用indexPath)将一些数据发送到secondVC,然后您可以在secondVC中编辑该任务,甚至为其设置通知提醒。
在secondVC中,我运行一些代码,在用户为特定任务设置的时间触发计时器。作为回报,计时器调用选择器方法来更新标签并将其更改为“Time's Up”。
当这个标签是“时间到了”时,我将第一个vc中tableviewcell中的bellicon设置为白色,或者将bellicon从特定任务中移除。
我希望这段代码即使我不是第二个VC也能运行。(我在viewDidAppear中运行此代码)。如果我把这段代码放在一个函数中,然后在firstVC中调用它,代码就不知道应该选择哪个时间。

override func viewWillAppear(_ animated: Bool) {
adjustTextViewHeight()
edittaskview.becomeFirstResponder()
cardremindery?.constant = -999

guard let selectedDate = editnotes?.sSelectedDate,
    var needsToRemind = editnotes?.sReminderState  else {
        print("No date selected")
        return
}
if (needsToRemind) {
    self.timesUpTimer = Timer(fireAt: selectedDate, interval: 0, target: self, selector: #selector(updateTimeLabel), userInfo: nil, repeats: false)
    RunLoop.main.add(timesUpTimer!, forMode: RunLoopMode.commonModes)
}


}

更新belliconcolor的选择器代码:
@objc func updateTimeLabel()
{
  editnotes?.sReminderDate = "Time's up"
  editnotes?.belliconcolor = .white
  reminderMsg.text = editnotes?.sReminderDate
  print("Time is up ok")
}

当你在secondVC中时,上面的代码可以工作。即使我是第一个风险投资公司,我也希望这能奏效。由于我使用的是FetchedResultsController,因此我确信如果数据发生更改,tableView将被更新,而且由于belliconcolor是一个保存在coreData changing中的元素,因此它将更新tableView。
问题是:如何从firstVC为tableview的所有元素运行这段代码?
bellicon出现在您在secondVC中设置提醒的任务旁边。您可以通过点击tableview中的相关单元格来访问secondVC:
ios - 在firstVC中时,如何在secondVC中运行功能?-LMLPHP
你在第二个VC中设置了提醒。如果时间已到,则到期日下方的标签将更改为“时间已到”,并且特定任务的belliconcolor将更改为.white
ios - 在firstVC中时,如何在secondVC中运行功能?-LMLPHP
时间到了!->这段代码被删掉了,而这个特殊任务的belliconcolor是.white。这一点在我去第一家风险投资公司的时候就很明显了。我希望即使在firstVC中也能运行此代码,以便自动更新tableview。
ios - 在firstVC中时,如何在secondVC中运行功能?-LMLPHP

最佳答案

通常有两种方法:
使用通知中心。
使用委托模式。
他们两个都可以工作。如何选择将是一个正确的问题。回答this可能会有帮助。
通常,如果我想在两个对象之间只有一个连接,我通常使用委托。如果要通知应用程序中的许多对象,请使用NotificationCenter。
希望有帮助。如果有什么不清楚的地方请告诉我,我会尽力解释的。
更新:
再看一遍,如果你离开那个屏幕,来自SecondVC的yes通知/委托将不起作用。离开屏幕会让你失去一切。因此,您需要一些,例如,将一直保存在内存中的singleton类。所以。从SecondVC开始,您将计时器设置为singleton,然后singleton将向FirstVC(或您可能需要的任何其他地方)发送通知/委托。

关于ios - 在firstVC中时,如何在secondVC中运行功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49015119/

10-12 00:18