gpt4 book ai didi

iphone - 以编程方式访问 View Controller

转载 作者:行者123 更新时间:2023-12-03 21:17:28 25 4
gpt4 key购买 nike

作为 iOS 开发新手,我一直在关注developer.apple.com 上的教程,现在正在向这些示例添加功能以加深我的知识。

second ios app”教程为您提供了一个基于导航 Controller 的应用程序。扩展这个应用程序,我想要一个标签栏 Controller 作为第一个 View Controller 。

所以我现在有以下设置:

Storyboard

一切都好。但是 BirdsAppDelegate(UIApplicationDelegate)中有代码依赖于作为 Root View Controller 的导航 Controller ,因此它可以创建并分配“datacontroller”对象。

这是原始代码(在添加标签栏 Controller 之前):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
BirdsMasterViewController *firstViewController = (BirdsMasterViewController *)[[navigationController viewControllers] objectAtIndex:0];

BirdSightingDataController *aDataController = [[BirdSightingDataController alloc] init];
firstViewController.dataController = aDataController;
return YES;
}

现在这段代码失败了,因为它假设 Root View Controller 是导航 Controller 。

我已经更新了代码,以便它可以工作 - 但在我看来,它很丑陋,并且每次更改 View Controller 层次结构时都必须更改:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions
{
// Override point for customization after application launch.

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;

UINavigationController *navigationController = (UINavigationController *) [[tabBarController viewControllers] objectAtIndex:0];

BirdsMasterViewController *firstViewController = (BirdsMasterViewController*) [[navigationController viewControllers] objectAtIndex:0];

BirdSightingDataController *aDataController = [[BirdSightingDataController alloc] init];

firstViewController.dataController = aDataController;

return YES;
}

所以我的问题是:什么是更好的方法来完成我在上面的代码中所做的事情,以便对层次结构的任何更改都不会破坏代码?

如何以编程方式访问应用程序委托(delegate)中的 View Controller ,以便我可以创建并分配它的 BirdSightingDataController 对象?

谢谢!

最佳答案

您可以使用[obj isKindOfClass:[BirdsMasterViewController class]]循环[navigationController viewControllers]数组来查找BirdsMasterViewController的实例。

关于iphone - 以编程方式访问 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576231/

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