gpt4 book ai didi

iphone - 访问 UIWindow 的 rootViewController?

转载 作者:行者123 更新时间:2023-12-01 18:30:01 25 4
gpt4 key购买 nike

这是 ECSlidingViewController 的 applicationDidFinishLaunching 方法演示代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
ECSlidingViewController *slidingViewController = (ECSlidingViewController *)self.window.rootViewController;
UIStoryboard *storyboard;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
storyboard = [UIStoryboard storyboardWithName:@"iPhone" bundle:nil];
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil];
}

slidingViewController.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"FirstTop"];

return YES;
}

对我来说没有意义的是第一行:
ECSlidingViewController *slidingViewController = (ECSlidingViewController*)self.window.rootViewController;

我只是不明白你怎么能捕获窗口的 Root View Controller ,然后像你喜欢的那样转换它?那条线到底是做什么的,它是如何工作的?

最佳答案

在您的 Storyboard中,您为 Root View Controller 设置了一个场景(即,在属性中选中了 rootViewController 复选框,并且 Canvas 上的初始箭头指向该 View Controller )。该 View Controller 的类在属性检查器中设置。在您的情况下,类(class)设置为 ECSlidingViewController .这决定了 Storyboard将实例化的对象的类。

UIWindow 有一个属性 rootViewController返回该对象。 UIWindow 上的属性类型是UIViewController - 所以窗口知道它是一个 View Controller ,但它不知道比这更多的细节。您的 ECSlidingViewController类是 UIViewController 的子类.当它返回时,您的代码会将其转换为更具体的对象,以便您可以将其作为实际更具体的对象来使用。

关于iphone - 访问 UIWindow 的 rootViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133515/

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