![](/img/trans.png)
[英]How to update a UITableViewCell in firstVC when a change occurs in secondVC automatically and in realtime
[英]How to run a function in a secondVC when you are in firstVC?
雖然我非常確定可以解決此問題的簡單方法,但這里的問題是,secondVC絕對不會與形式或形式與firstVC分開。 第二個VC是您點擊tableViewCell時獲得的。 您點擊的單元格(使用indexPath)將一些數據發送到secondVC,然后您可以在secondVC中編輯該任務,甚至為其設置通知提醒。
在secondVC中,我正在運行一些代碼,該代碼在用戶為特定任務設置的時間觸發計時器。 反過來,計時器將調用選擇器方法,該方法將更新標簽並將其更改為“時間到”。
當此標簽為“ Time's Up”時,我將firstVC的tableviewcell中的鍾形圖標設置為白色,或從特定任務中刪除該鍾形圖標。
即使我不在secondVC中,我也希望運行這段代碼。 (我在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中時,上面的代碼有效。 我希望即使我在firstVC中也能正常工作。 由於我使用的是FetchedResultsController,因此我非常確定如果更改了數據,則會更新tableView,並且由於belliconcolor是我保存在coreData中的元素,因此它會更新tableview。
問題是:如何從firstVC中為tableview的所有元素運行這段代碼? 該鍾形圖標出現在您在secondVC中設置提醒的那些任務的旁邊。 您可以通過點擊表視圖中的相關單元格來訪問secondVC:
您可以在第二個VC中設置提醒。 如果時間已到,則“到期日期”下方的標簽將更改為“時間已到”,特定任務的.white
改為.white
時間到! ->該代碼段已執行,此特定任務的belliconcolor為.white。 當我轉到firstVC時,這將很明顯。 我希望即使我在firstVC中也要運行此代碼,以便自動更新tableview。
通常,有兩種方法可以做到這一點:
他們兩個都可以工作。 如何選擇將是一個正確的問題。 回答這個問題可能會有所幫助。
通常,如果我只希望2個對象之間只有1個連接,則通常使用Delegate。 如果要在應用程序中通知許多對象,請使用NotificationCenter。
希望能幫助到你。 讓我知道是否有不清楚的地方,我會嘗試解釋。
更新:
再次閱讀它,是的,如果您離開該屏幕,則SecondVC中的Notifications / Delegate將不起作用。 離開屏幕將取消初始化您在那里的所有內容。 因此,您需要一些單例類,這些單例類將一直保存在內存中。 所以。 從SecondVC中,您將計時器設置為單例,稍后將單例觸發到FirstVC的Notifications / Delegates(或您可能需要的其他任何地方)。
我在這里找到了關於stackoverflow的精彩討論,該討論提出並解釋了您所遇到的問題類型的許多解決方案,即在View Controller之間傳遞數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.