gpt4 book ai didi

ios - 一旦呈现的模态 vc 被关闭,如何在 VC 中重新加载 UITableView?

转载 作者:行者123 更新时间:2023-11-29 01:50:39 26 4
gpt4 key购买 nike

我正在使用Swift 2,并且有一个主详细信息模板。详细信息 View Controller 包含一个表格 View ,其中可以在由详细信息 View Controller 呈现的模态视图上添加元素(使用核心数据)。我尝试使用集成到详细 View Controller 中的委托(delegate),该委托(delegate)告诉它在模态视图关闭时重新加载 TableView 的数据,但直到我在主视图的主视图中选择另一个元素后,它才会重新加载数据。 主从模板。这是 newSittingVC 中的委托(delegate):

protocol newSittingVCDelegate {
func saveReload()
}

当用户想要关闭模态视图时,调用此代码:

self.delegate!.saveReload()
presentingViewController!.dismissViewControllerAnimated(true, completion: nil)

在详细 View VC 中调用它:

func saveReload() {
sittingTable.reloadData()
//self.view.setNeedsDisplay()
}

它并不像我描述的那样工作。有谁知道一种可行的方法。即使使用 setNeedsDisplay() 强制 View 重绘也不起作用。

编辑: This is what Xcode looks like when I set the breakpoint. Any tips how to precede with the information?

最佳答案

阅读我的 answer我在其中描述您必须将后备存储与 UITableView 同步。您遇到了非常相似的问题。

在回调中,您只需调用 sittingTable.reloadData()。它能做什么?它调用所有这些 UITableViewDataSource 委托(delegate)方法,例如 numberOfSections...,...以及 tableView(_:cellForRowAtIndexPath:)。而这些方法有什么作用呢?它们根据您的 sitzungen 数组返回值(count,...)。您现在可能知道问题出在哪里 - 您更新了 sitzungen 数组吗?不,你没有。

因此,在您的 saveReload() 方法中,您必须再次执行获取请求(与您在 setupSittingTable 中执行的方式相同)并且当您的 sitzungen 数组更新,然后(立即)调用 sittingTable.reloadData()。这应该可以解决您的问题。


另外一点...

不要以这种方式调用委托(delegate)方法...

self.delegate!.saveReload()

...更改为...

self.delegate?.saveReload()

...有什么区别?我假设您的委托(delegate)是可选的(),并且当未设置委托(delegate)时(nil),它将崩溃。因为 ! 是强制展开可选的,如果它是 nil,它就会崩溃。如果将 ! 替换为 ? ,则会执行以下操作:

  • 如果 self.delegate != nil - 调用 saveReload()
  • if self.delegate == nil - 没有任何反应,也没有崩溃。

您可以在“可选链接”章节中了解更多信息,尤其是 Calling Methods Through Optional Chaining .

不要使用sittingCell作为类名。类名、类型……应该以大写字母(驼峰式)开头。所以正确的类名是 SittingCell。第一个小写字母用于函数名、属性名、...

此外,下次请不要使用图片,最好将问题中的代码复制并粘贴并正确格式化为文本。读起来很困难,...

关于ios - 一旦呈现的模态 vc 被关闭,如何在 VC 中重新加载 UITableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31460672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com