navigationController!.pushViewController与iOS Swift中的presentViewController

时间:2016-04-25 01:55:35

标签: uinavigationcontroller presentviewcontroller

在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]

在推入导航堆栈时,我无法获得标签的值。

1 个答案:

答案 0 :(得分:2)

看起来好像在调用presentViewController方法时,视图控制器的视图实际上是在调用期间加载的,而在导航控制器上调用pushViewController时,视图本身是在加载之后加载的。电话。

您可以通过在呈现/推动视图控制器之前和之后打印到控制台并在TextViewController的viewDidLoad方法中打印到控制台来自行测试。

需要加载视图才能加载textDetail变量(您还没有这么说,但我假设这是一个IBOutlet)并且textDetail变量需要加载,以便能够修改其text属性。

要使用pushViewController,您可以在TextViewController类上设置变量,并覆盖其viewDidLoad方法,然后您可以在textDetail上设置文本属性变量。