ios - Root View Controller Swift

标签 ios swift uitableview uiviewcontroller appdelegate

我的应用程序委托(delegate)中有一个函数,它将一个项目附加到名为 ViewController.swift 的文件中的数组中,然后我想在同一文件中重新加载表格 View 。我尝试这样做:

let vc = ViewController()
let navigationController = UINavigationController(rootViewController: vc)
window!.rootViewController = navigationController
println(vc.messages)

//1        vc.messages.append(message.data.message as! String)
//2        vc.MessageTableView?.reloadData()

编号 1,2 的行是我设置断点的地方。它似乎在第 2 行之后中断。

我得到的确切错误是

fatal error: unexpectedly found nil while unwrapping an Optional value

我相信我的问题是我错误地设置了 Root View Controller 。

编辑#1

窗口声明在顶部。

如果我像这样运行我的代码:

    let vc = ViewController()
    messages.append(message.data.message as! String)
    vc.MessageTableView?.reloadData()
    println(messages)

然后我可以看到正确的数据被放入数组中(我在这个场景中将其设置为全局数组),但表不会在 View Controller 中更新。

最佳答案

您必须在 ViewController 中重新加载数据 将重新加载放入 viewDidAppear() 或类似的东西

这是一个错误,因为您刚刚init一个 Controller ,但您的views尚未准备好,它们正在初始化。 在 viewDidLoad 之后,您可以调用您的 views,但之前不能。

这就是为什么你的tablenil

除此之外,为什么即使您看不到它,也需要重新加载,对吧?

关于ios - Root View Controller Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31062108/

相关文章:

ios - 无法编译 Ziparchive 库 (iOS)

ios - 使用 Swift 在 Xcode 中进行异步 UI 测试

swift - 无法让 NSCollectionView NSCollectionViewItem 工作

ios - 使用自动布局将 UITableView 的高度设置为其内容的高度

ios - 滑动删除是删除 tableView 行的唯一方法吗?

ios - CIPixellate 图像输出大小变化

ios - AVCapturePhotoOutput jpegPhotoDataRepresentation 访问预览照片

iOS,Swift 4,通过单击后退按钮返回时,导航 Controller 标题颜色不会更改

ios - 在 iOS 7 上选择后 UITableViewCell 不更新

ios - 使用私有(private)方法使代码尽可能模块化