gpt4 book ai didi

ios - 如何设置rootViewController指向一个指针的地址

转载 作者:行者123 更新时间:2023-11-29 10:38:49 25 4
gpt4 key购买 nike

总结:rootViewController 被设置为一个指针。我改变了指针,但 rootViewController 没有改变。

我将 rootViewController 设置为指向名为“currentViewController”的 View Controller 的指针。

将“currentViewController”更改为指向不同的 UIViewController - iPhone/iPad 不会更新其屏幕。为什么?

请注意以下内容不起作用 - 它显示 index=0 处的 View Controller :

_currentViewController = [self.viewControllers objectAtIndex:0];
[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController;
_currentViewController = [self.viewControllers objectAtIndex:1];

请注意以下内容确实有效,因为它在索引 1 处显示了 View Controller ,但对我来说没有意义(我已经在第一次告诉 rootViewController 它应该指向的位置):

_currentViewController = [self.viewControllers objectAtIndex:0];
[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController;
_currentViewController = [self.viewControllers objectAtIndex:1];
[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController;

最佳答案

您误解了指针和赋值的工作原理。当你写:

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

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

您将分配视为 rootViewController 成为 _currentViewController 的别名。这不是发生的事情。发生的事情是为 rootViewController 分配了一个值。就是这样。如果您希望它具有其他值,则需要显式执行该分配,这就是您的第二个示例有效的原因。

关于ios - 如何设置rootViewController指向一个指针的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25575535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com