如何将rootViewController设置为指向指针的地址

时间:2014-08-29 20:10:37

标签: ios objective-c pointers rootview

总结: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; 

1 个答案:

答案 0 :(得分:2)

你误解了指针和赋值是如何工作的。当你写:

[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController;

...会发生的是rootViewController现在拥有一个值,该值是内存中某个对象的地址。更改currentViewController指向的内容(即更改其值)对rootViewController没有影响。它仍然指向你告诉它指向的任何东西(即它的值不会改变)。

您正在对作业进行处理,就像rootViewController成为_currentViewController的别名一样。这不是发生的事情。会发生什么是为rootViewController分配了一个值。而已。如果您希望它具有其他值,那么您需要显式执行该分配,这就是您的第二个示例有效的原因。