在UINavigation中推送ViewController与在下一个视图中更改值时以模态方式呈现ViewController有什么影响?
例如,为什么第一个工作而不是第二个?
首先:
var textController: TextViewController
textController = self.storyboard!.instantiateViewControllerWithIdentifier("TextViewController") as! TextViewController
presentViewController(textController, animated: false, completion: nil)
textController.textDetail.text = Categories[indexPath.row]
第二
var textController: TextViewController
textController = self.storyboard!.instantiateViewControllerWithIdentifier("TextViewController") as! TextViewController
self.navigationController!.pushViewController(textController,animated:true)
textController.textDetail.text = Categories[indexPath.row]
在推入导航堆栈时,我无法获得标签的值。
答案 0 :(得分:2)
看起来好像在调用presentViewController
方法时,视图控制器的视图实际上是在调用期间加载的,而在导航控制器上调用pushViewController
时,视图本身是在加载之后加载的。电话。
您可以通过在呈现/推动视图控制器之前和之后打印到控制台并在TextViewController的viewDidLoad
方法中打印到控制台来自行测试。
需要加载视图才能加载textDetail
变量(您还没有这么说,但我假设这是一个IBOutlet)并且textDetail
变量需要加载,以便能够修改其text
属性。
要使用pushViewController
,您可以在TextViewController
类上设置变量,并覆盖其viewDidLoad
方法,然后您可以在textDetail
上设置文本属性变量。