gpt4 book ai didi

iphone - 如何使用托管上下文自定义初始化 Interface Builder 的 UIViewController

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:36 27 4
gpt4 key购买 nike

我正在 Interface Builder 中使用 NavigationController 和 BandListViewController(UITableViewController) 创建一个简单的界面,并将委托(delegate)设置为 AppDelegate 属性。

@interface CRUDAppDelegate : NSObject <UIApplicationDelegate> {   
UINavigationController *bandNav;

BandListViewController *bandList;
}

enter image description here

但是,我不知道如何初始化我的 BandListViewController,传递参数 managedObjectContext 而不将其设置在 awakeFromNib 上。 CRUDAppDelegate 已经初始化了这个 Controller 并将他自己的 Nib 设置到 navigationController 中,但是当我尝试使用 initInManagedObjectContext 在 didFinishLaunchingWithOptions 中创建一个新的 BandListViewController 时,显示(TableViewController)仍然是旧的 bandList。 (managedObjectContext = null)

到目前为止,我所做的是按照 Apple 的建议将 bandList managedObjectContext 保持在 awakeFromNib。

- (void)awakeFromNib
{
/*
Typically you should set up the Core Data stack here, usually by passing the managed object context to the first view controller.
self.<#View controller#>.managedObjectContext = self.managedObjectContext;
*/

self.bandList.managedObjectContext = self.managedObjectContext;
}

我想要的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.bandList = [[BandListViewController alloc] initInManagedObjectContext:self.managedObjectContext];

// Override point for customization after application launch.
[self.window addSubview:bandNav.view];
[self.window makeKeyAndVisible];
return YES;
}

最佳答案

恭喜;您已经发现了 Interface Builder 众多恼人的限制之一!

一切都在代码中完成,让您免于头疼。确实没有那么多代码。

或者,从当前状态开始,更简单的方法是在 nib 中实例化一个“虚拟” Controller ,然后执行类似 bandNav.viewControllers = [NSArray arrayWithObject:bandList]; 的操作。

关于iphone - 如何使用托管上下文自定义初始化 Interface Builder 的 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6404459/

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