2012-03-26 135 views
-1

我已经加入导航控制器到我器件的应用在didFinishLaunchingWithOptions这样navigationcontroller导致应用程序崩溃

LoginViewController *mainView = [[[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil] autorelease]; 
navigationController = [[[UINavigationController alloc]initWithRootViewController:mainView]autorelease]; 
[self.window addSubview:navigationController.view]; 
[self.window makeKeyAndVisible]; 

在我LoginViewController的viewDidLoad我有,

self.navigationItem.hidesBackButton = YES; 
[super viewDidLoad]; 

UIImage *img = [[UIImage alloc] init]; 
img = [UIImage imageNamed:@"top_bar.png"]; 
bar = [self.navigationController navigationBar]; 
[bar setBackgroundImage:img forBarMetrics:UIBarMetricsDefault]; 

UIImage *signIn = [UIImage imageNamed:@"signin_btn.png"]; 
UIButton *phButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[phButton setImage:signIn forState:UIControlStateNormal]; 
phButton.frame = CGRectMake(0.0, 0.0, signIn.size.width, signIn.size.height); 
UIBarButtonItem *phBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:phButton]; 
self.navigationItem.rightBarButtonItem = phBarButtonItem; 
[phButton addTarget:self action:@selector(checkConnection) forControlEvents:UIControlEventTouchUpInside]; 
[phButton release]; 

,当我在我的手机上运行的应用程序它崩溃。当我从appDelagate删除导航控制器它的工作原理...Ÿ我不能让我的导航正常工作,我怎么能避免它坠毁。

+0

请添加您在控制台中出现错误。 – hchouhan02 2012-03-26 06:50:39

回答

2

修改代码

试试这个代码 声明appdelete.h文件

@class LoginViewController; 

LoginViewController *viewController; 
@property (nonatomic, retain) IBOutlet LoginViewController *viewController; 

的appdelegate。M档在didFinishLaunchingWithOptions声明

@synthesize viewController; 

UINavigationController *nav=[[UINavigationController alloc] initWithRootViewController:viewController]; 
[window addSubview:nav.view]; 
[window makeKeyAndVisible]; 
return YES; 

    -(void) dealloc 
{ 
[viewController release]; 
......//some code 
} 
+0

它运行在iPhone模拟器第一次当我运行的应用程序。在手机上它崩溃.. – sansid1983 2012-03-26 06:40:27

+0

好吧,你可以尝试这种方法 – akk 2012-03-26 06:47:11

+0

看到我的更新回答 – akk 2012-03-26 06:53:46

0

我这个这导致死机。

[phButton release]; 

phButton不需要发布;

顺便说一句,

phBarButtonItem需要被释放;

0

我认为问题出在您的导航控制器autorelease。

  1. 你尝试删除autorelease

navigationController = [[UINavigationController的 的alloc] initWithRootViewController:MAINVIEW];

  1. 尝试使用属性(如果有的话),

self.navigationController = [[[UINavigationController的 的alloc] initWithRootViewController:MAINVIEW]自动释放];

+0

试过这个..没有工作 – sansid1983 2012-03-26 06:26:53

+0

@ user1168699。您从您的viewview的主视图中删除所有代码。主视图中可能会有一些问题导致问题出现。 – Vignesh 2012-03-26 06:33:48

+0

发现当我试图设置导航栏的背景图像时,它崩溃.. – sansid1983 2012-03-26 06:55:24

0

试试这个...

self.window.rootViewController = navigationController; 

,而不是[self.window addSubview:navigationController.view];

+0

我试过这个......但它仍然崩溃 – sansid1983 2012-03-26 06:32:59

+0

@ user1168699:我认为这必须正常工作,因为我已经实现了相同的概念对我来说它工作正常....检查你的initWithNibName:@“”...你给与它相同的.xib名? – Krunal 2012-03-26 06:36:15

+0

.xib是正确的...每当我在模拟器上运行应用程序时,我必须重置。那么只有它的作品......但在手机上它根本不工作...当我删除导航栏,然后它工作正常 – sansid1983 2012-03-26 06:42:40

0

[phButton发布];删除该行&

IMG & phBarButtonItem需要被释放

+0

释放他们...没有任何反应 – sansid1983 2012-03-26 06:33:27

+0

在viewDidLoad函数中设置断点。找到应用程序正确崩溃或启用NSZombie跟踪崩溃 – Rams 2012-03-26 06:48:18

+0

发现,当我试图设置导航的背景图像吧它崩溃.. – sansid1983 2012-03-26 06:56:20