首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >initWithNibName:....方法未触发

initWithNibName:....方法未触发
EN

Stack Overflow用户
提问于 2012-02-08 18:05:08
回答 3查看 3.8K关注 0票数 0

在基于导航的应用程序中,initWithNibName方法不会调用/fire

代码语言:javascript
复制
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

我在appdelegate中定义了rootViewController (calViewController),如下所示

代码语言:javascript
复制
calViewController *objCalViewController = (calViewController *) [navController topViewController];

objCalViewController.context = [self managedObjectContext];


[window addSubview:navController.view];
[window makeKeyAndVisible];

这就是问题所在吗?请帮我个忙

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-08 18:15:49

在你的appdelegate.m中,这样做

代码语言:javascript
复制
calViewController *objCalViewController = [[calViewController alloc] initWithNibName:@"WebViewController_iPhone" bundle:nil];
objCalViewController.managedObjectContext = self.managedObjectContext;
navController = [[UINavigationController alloc] initWithRootViewController:objCalViewController];
[self.window setRootViewController:navController];
[window makeKeyAndVisible];
票数 1
EN

Stack Overflow用户

发布于 2012-02-08 18:14:51

在nib文件或故事板(通常作为IBOutlet)中定义UIViewController时,不会调用initWithNibName:bundle:,而是调用initWithCoder:。当您使用界面生成器将UIViewController设置为UITabBarControllerUINavigationController的一部分时,以及在使用情节提要时,几乎总是会出现这种情况。

票数 10
EN

Stack Overflow用户

发布于 2012-02-08 18:26:05

好的,假设我有一个名为TCViewController的viewController,

代码语言:javascript
复制
TCViewController.h, TCViewController.m and TCViewController.xib

TCViewController.m中,我重写了下面的方法。

代码语言:javascript
复制
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
   self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
   if (self) {
       // Custom initialization
   }
   return self;
}

在我的RootViewController中,我想像这样初始化TCViewController

RootViewController.m

代码语言:javascript
复制
-(void)viewDidLoad //not necessarily this one, can be any method
{
 // This initialization calls the initWithNibname method implemented in TCViewController.m
TCViewController *viewController  = [[TCViewController alloc] initWithNibName:@"TCViewController" bundle:nil];

[self.navigationController pushViewController:viewController animated:YES];


}

如果你像这样初始化一个viewController,如果你已经实现了它,控制将会传递给你的子类中的initWithNibName方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9191142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档