【问题标题】:Swift need to reload TableView that is contained within a containerViewSwift 需要重新加载包含在 containerView 中的 TableView
【发布时间】:2015-10-17 02:02:28
【问题描述】:

我的应用程序主视图的 containerView 中有一个 tableViewController。用户可以选择需要将新值传递给 tableViewController 并重新加载 tableView 的三个按钮之一。

我似乎找不到如何最好地以编程方式执行此操作的示例。

感谢任何建议或示例链接。

添加一些我尝试过的代码

@IBAction func checkins10(sender: AnyObject) {
    statusImage10.hidden = false
    statusImage1.hidden = true
    statusImage5.hidden = true
    self.hourWindow = 10.00

    reloadCheckInView()
}


func reloadCheckInView() {
    let checkInsTableViewController: FriendCheckInTableViewController = FriendCheckInTableViewController(nibName: "FriendCheckInTableViewController", bundle: nil)
    checkInsTableViewController.checkInsTableView.reloadData()

}

更新

func reloadCheckInView() {
   // let checkInsTableViewController: FriendCheckInTableViewController = FriendCheckInTableViewController(nibName: "FriendCheckInTableViewController", bundle: nil)
    var viewControllerStoryboardId = "FriendCheckInTableViewController"
    var storyboardName = "Main"
    var storyboard = UIStoryboard(name: storyboardName, bundle: NSBundle.mainBundle())
    let checkInsTableViewController = storyboard.instantiateViewControllerWithIdentifier(viewControllerStoryboardId) as UIViewController!

【问题讨论】:

  • 您尝试了哪些方法,哪些方法不起作用?需要更具体,如果您可以发布一些代码会有所帮助。
  • 我刚刚添加了我刚刚尝试过的内容,但我在checkInsTableViewController.checkInsTableView.reloadData() 上收到了fatal error: unexpectedly found nil while unwrapping an Optional value
  • 那么你的 checkInsTableViewController 没有被正确初始化。
  • 使用 NSNotifications 会是更好的选择吗?如果我从 MainView 发布通知,containerView 订阅会起作用吗?

标签: ios swift uitableview uicontainerview


【解决方案1】:

您将通过从包中加载 FriendCheckInTableViewController 获得一个新实例。您需要在包含视图的情节提要中引用该内容,并在编辑情节提要时设置连接。

【讨论】:

  • 我想我正朝着那条路前进。我将reloadCheckInView中的代码更改为var viewControllerStoryboardId = "FriendCheckInTableViewController"var storyboardName = "Main"var storyboard = UIStoryboard(name: storyboardName, bundle: NSBundle.mainBundle())let checkInsTableViewController = storyboard.instantiateViewControllerWithIdentifier(viewControllerStoryboardId) as UIViewController!
【解决方案2】:

您需要为 tableview 创建一个 var 并将其连接到情节提要中。

@IBOutlet weak var checkInsTableView: UITableView?

将它连接到情节提要中的 tableview 并根据需要刷新数据。

self.checkInsTableView.reloadData()

【讨论】:

  • 如果 var checkInsTableView 连接到我的 tableViewController,它位于我的主视图的 containerView 中。我将如何调用 self.checkInsTableView.reloadData()
  • 您是否尝试在另一个不可见的视图控制器中刷新表视图?您应该在当前表视图的当前视图中调用 .reloadData() 。如果您需要在其他地方刷新数据,那么您应该重组您的问题以获得更好的答案。
  • 或为您当前的课程提供更多代码,以便您获得更多帮助,因为更多上下文将帮助每个人弄清楚您需要做什么。
  • 因为我认为我要做的不仅仅是显示表格,我继续使用 UITableView 与 containerView 并没有出现任何问题
猜你喜欢
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 2016-12-24
  • 1970-01-01
相关资源
最近更新 更多