2011-06-16 76 views
0

當按鈕被點擊時,我有以下操作被調用。日誌消息被打印,視圖不會改變。這個函數在UIViewController中。iPhone:UINavigationController不顯示新視圖

任何想法我做錯了什麼?爲什麼新的視圖不會以紅色背景顯示?

- (void)viewDidLoad 
{ 
[levelButton2 addTarget:self action:@selector(clickButton) forControlEvents:UIControlEventTouchUpInside]; 
//MORE CODE 
} 

- (void) clickButton 
    { 
     NSLog(@"Clicked Button"); 
     UIViewController *myViewController = [[UIViewController alloc] init]; 
     myViewController.title = @"My First View"; 
     myViewController.view.backgroundColor = [UIColor redColor]; 

     //to push the UIView. 
     [self.navigationController pushViewController:myViewController animated:YES]; 

     //[self.navigationController pushViewController:nextController animated:YES]; 
    } 
+1

你確定self.navigationController不是零嗎?使用調試器設置中斷並逐步執行代碼,而不是隻記錄一行。 – Nick 2011-06-16 04:26:53

+0

我不確定它是否爲零 - 我得檢查。我沒有實例化它。 UIViewControllers是否免費獲得navigationController? – 2011-06-16 13:08:59

+0

UINavigationController未包含在UIViewController中。該屬性是一個指向UINavigationController的指針(如果有的話)。 – Nick 2011-06-16 15:35:31

回答

0
-(void) clickButton 
{ 
    NSLog(@"Clicked Button"); 
    MyFirstController *myViewController = [[MyFirstController alloc] init]; 

    [self.navigationController pushViewController:myViewController animated:YES]; 
    [myViewController release]; 
} 

然後進入MyFirstController.m文件後

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    if(self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) 
    { 
     self.title = @"My First View"; 
    } 
    return self; 
} 

我希望它能幫助你。

0

您還沒有使用或提及NIB文件在controller..Add NIB文件要麼做一個視圖控制器導航的設置根視圖控制器和推視圖控制器

+0

你不需要筆尖。你可以使用筆尖,但它不像它是一種必需的方法。 – Nick 2011-06-16 15:33:00

0

你必須改變你的IBAction爲方法一點點,

- (void) clickButton 
    { 
     NSLog(@"Clicked Button"); 
     MyFirstController *myViewController = [[MyFirstController alloc] initWithNibName:@"MyFirstController" bundle:nil]; 
     myViewController.title = @"My First View"; 
     myViewController.view.backgroundColor = [UIColor redColor]; 

     //to push the UIView. 
     [self.navigationController pushViewController:myViewController animated:YES]; 

     //[self.navigationController pushViewController:nextController animated:YES]; 
    } 
+0

即使沒有與MyFirstController關聯的nib文件,這是否也能正常工作?我是否必須用nib初始化? – 2011-06-16 13:19:43