繁体   English   中英

根视图控制器Swift

[英]Root View Controller Swift

我的应用程序委托中有一个函数,该函数将一个项目追加到名为ViewController.swift的文件中的数组中,然后我想在该文件中重新加载tableview。 我尝试这样做:

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的行后中断。

我得到的确切错误是

致命错误:解开Optional值时意外发现nil

我相信我的问题是我错误地设置了根视图控制器。

编辑#1

窗口在顶部声明。

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

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

然后,我可以看到将正确的数据放入了数组(在这种情况下我将其设置为全局),但是该表在View控制器中没有得到更新。

您的委托功能的实现是什么? 将表视图放入情节提要中之后,必须将表视图连接到ViewController.swift。 将控件从tableview拖动到viewcontroller的顶部(黄色圆圈),将出现一个黑色弹出窗口,执行两次,每次单击数据源并委托。 然后在viewcontroller.swift文件中实现它们在本教程中显示的功能。 您无需修改​​AppDelegate.swift文件!

https://www.weheartswift.com/how-to-make-a-simple-table-view-with-ios-8-and-swift/

您必须在ViewController重新加载数据将重新加载放入viewDidAppear()或诸如此类

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

所以这就是你的table nil的原因

除此之外,为什么即使您没有看到table也需要重新加载table ,对吗?

如果您希望viewcontroller成为rootviewcontroller,那么您只需在情节提要中单击viewcontroller,然后在Utility-> Attributes inspector->选中“ is initial view controller”框即可。

https://www.dropbox.com/s/qfd9jqeos7ueq1w/Screen%20Shot%202015-06-25%20at%207.40.46%20PM.png?dl=0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM