应用程序试图推动一个无视图控制器的目标

问题描述:

在我的iphone应用程序中我有这个pb:Application tried to push a nil view controller on target <UINavigationController: 我有一个视图控制器包含一个tableview,我希望如果一行被选中一个其他视图控制器是显示。 这里是我的代码:应用程序试图推动一个无视图控制器的目标<UINavigationController

在RecherchePartenaireViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row==3){ 
     NSLog(@"RecherchePartenaireDistanceViewController..."); 

     recherchePartenaireDistanceViewController = [[RecherchePartenaireDistanceViewController alloc] init]; 

     self.recherchePartenaireDistanceViewController=recherchePartenaireDistanceViewController.recherchePartenaireViewController; 
     [self.navigationController pushViewController:recherchePartenaireDistanceViewController animated:YES]; 
     [recherchePartenaireDistanceViewController release]; 
    } 
} 

在RecherchePartenaireDistanceViewController.h:

@class RecherchePartenaireViewController; 

@interface RecherchePartenaireDistanceViewController : UIViewController { 

    RecherchePartenaireViewController *recherchePartenaireViewController; 
} 

@property (nonatomic, retain) IBOutlet RecherchePartenaireViewController *recherchePartenaireViewController; 
@end 

和RecherchePartenaireDistanceViewController.m

#import "RecherchePartenaireDistanceViewController.h" 
#import "RecherchePartenaireViewController.h" 

@implementation RecherchePartenaireDistanceViewController 


@synthesize recherchePartenaireViewController; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [super dealloc]; 
    [recherchePartenaireViewController release]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

@end 

问题出在哪里?我真的看不到它。请heeelp ....

尝试使用此:

- (void)dealloc 
{ 
    [recherchePartenaireViewController release]; 
    [super dealloc]; 

} 

代替

- (void)dealloc 
{ 
    [super dealloc]; 
    [recherchePartenaireViewController release]; 
} 
+0

与此没有什么变化.. – Gabrielle

如果RecherchePartenaireDistanceViewController与下面的语句在初始化厦门国际银行界面比使用,

recherchePartenaireDistanceViewController = [[RecherchePartenaireDistanceViewController alloc] initWithNibName:@"RecherchePartenaireDistanceViewController" bundle:nil]; 

比将其推送到导航控制器。

+1

还是同样的问题:((( – Gabrielle

+0

如果不指定XIB文件(即只需要调用'init'),那么视图控制器会自动寻找一个与 – deanWombourne

+0

我仍然有问题,嵌套的推动动画可能导致损坏的导航栏 在意外的状态下完成导航转换导航栏子视图树可能会损坏 无法将自我添加为子视图,任何帮助将不胜感激 –

我想我明白你在做什么,但我不明白你想达到什么目的!你有一个包含另一个视图控制器的ViewController?

RecherchePartenaireDistanceViewController包含RecherchePartenaireViewController

我认为它是一个IBOutlet您使用的是厦门国际银行文件填充它。

我能想到的唯一情况是在xib文件中创建RecherchePartenaireDistanceViewController时出现问题。

你怎么在控制台中看到,如果你这样做:

NSLog(@"controller : %@", recherchePartenaireDistanceViewController); 

只是将它添加到导航控制器之前?

PS

这条线的目的是什么?

self.recherchePartenaireDistanceViewController=recherchePartenaireDistanceViewController.recherchePartenaireViewController;