【问题标题】:UITableview lost reference after pop view controller弹出视图控制器后 UITableview 丢失参考
【发布时间】:2017-02-23 08:49:21
【问题描述】:

例如,我有 ViewController1UITableview 对象和数据。然后我将从 ViewController1 推送到另一个控制器到 ViewController2

我的问题是当我尝试从ViewController2 弹出到ViewController1 然后UITableview 对象返回nil 并且我的应用程序崩溃了。这个问题经常发生。

我正在使用情节提要分配UITableview。我使用swift 2.0 作为编程语言。

下面是我的应用程序崩溃的源代码。

  override func viewDidAppear(animated: Bool)
{
    super.viewDidAppear(true)
    btnRightBarBtnItem.image = UIImage(named : "Home")
    btnRightBarBtnItem.target = self
    btnRightBarBtnItem.action = #selector(self.btnHomeAction)

    refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
    refreshControl.addTarget(self, action: #selector(SelectPackingItemsViewController.refresh(_:)), forControlEvents: UIControlEvents.ValueChanged)
     packingItemsTableView.addSubview(refreshControl)   
}

App 在“packingItemsTableView.addSubview(refreshControl)”这一行崩溃了。

它在日志中返回 (lldb) po self.packingItemsTableView! 致命错误:在展开可选值时意外发现 nil

刷新控件不过是“UIRefreshControl() 对象”,它不为零。

【问题讨论】:

  • 在应用崩溃的地方添加你的代码工作。
  • 分享崩溃日志或您的来源。在视图生命周期事件期间是否以编程方式删除了任何视图?
  • viewDidAppear 中声明并初始化您的refreshControl 对象并尝试再次运行代码或将所有viewDidAppear 代码移动到viewDidLoad

标签: ios swift uitableview swift2


【解决方案1】:

在弹出第二个控制器后检查表视图的数据是否仍然存在,可能是它没有获取它的数据源。对包含 tableview 数据的 Array 保持强引用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2014-10-03
    • 2015-04-18
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多