在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]
在导航堆栈中推送时,我无法更改标签的值。
好像在调用 presentViewController
方法时,视图控制器的视图实际上是在调用期间加载的,而在导航控制器上调用pushViewController
时,视图本身是在调用后加载的。
您可以通过在演示/推送视图控制器之前和之后打印到控制台,并在 TextViewController 的 viewDidLoad
方法中打印到控制台来自己测试这一点。
需要加载视图才能加载textDetail
变量(您没有这么说,但我假设这是一个 IBOutlet),并且需要加载textDetail
变量才能修改其text
属性。
例如,要使用pushViewController
,您可以在TextViewController
类上设置一个变量,并重写其viewDidLoad
方法,然后您可以在textDetail
变量上设置 text 属性。