总结:rootViewController设置为指针。我改变了指针,rootViewController没有改变。
我将rootViewController设置为指向名为“currentViewController”的视图控制器的指针。
将'currentViewController'更改为指向不同的UIViewController - 而iPhone / iPad不会更新其屏幕。为什么呢?
侧注意以下内容不起作用 - 它显示索引= 0的视图控制器:
_currentViewController = [self.viewControllers objectAtIndex:0];
[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController;
_currentViewController = [self.viewControllers objectAtIndex:1];
注意以下内容确实有效,因为它在索引1处显示了viewcontroller,但对我没有意义(我已经第一次告诉rootViewController它应该指向):
_currentViewController = [self.viewControllers objectAtIndex:0];
[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController;
_currentViewController = [self.viewControllers objectAtIndex:1];
[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController;
答案 0 :(得分:2)
你误解了指针和赋值是如何工作的。当你写:
[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController;
...会发生的是rootViewController
现在拥有一个值,该值是内存中某个对象的地址。更改currentViewController
指向的内容(即更改其值)对rootViewController
没有影响。它仍然指向你告诉它指向的任何东西(即它的值不会改变)。
您正在对作业进行处理,就像rootViewController
成为_currentViewController
的别名一样。这不是发生的事情。会发生什么是为rootViewController
分配了一个值。而已。如果您希望它具有其他值,那么您需要显式执行该分配,这就是您的第二个示例有效的原因。