2011-12-05 66 views
3

我有問題讓我的導航控制器正常運行!如果我在RootViewController的表格單元中單擊,它看起來不是下一個ViewController。UINavigationController - 應用程序試圖推動目標上的零視圖控制器,我錯過了什麼?

錯誤信息讀取

「應用程序嘗試對目標 推零視圖控制器。」

所以我ALLOC做錯事,是我的猜測,我可能失去了一些東西從重要我遵循的書。

所以這裏的問題出現在我的RootViewController.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    UINavigationController *navigationController= [[UINavigationController alloc]init]; 

    switch ([indexPath row]) { 

     case 0: 
      [navigationController pushViewController:kundeViewCon animated:YES]; 
      break; 

     case 1: 
      [navigationController pushViewController:kalenderViewCon animated:YES]; 
      break; 

     case 2: 
      [navigationController pushViewController:wunschViewCon animated:YES]; 
      break; 
    } 
} 

在我AppDelegate.m我做下面的事情來設置RootViewController的作爲NavigationController:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 

// Navigation Controller 

    RootViewController *rootViewController = [[RootViewController alloc]init]; 

    navigationController = [[UINavigationController alloc]initWithRootViewController:rootViewController]; 

    self.window.backgroundColor = [UIColor whiteColor]; 

    [self.window addSubview:navigationController.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

所以我當我點擊單元格時,獲得了我想要推送的所有其他ViewController。我只是看不到我的錯,或者我錯過了什麼!?

也許有人可以幫助我,給我一個提示!那太好了!

+1

哪裏kundeViewCon,kalenderViewCon和wunschViewCon產生的? –

+0

這是所有獨立的類,它們被創建比在RootViewController.h – julesmummdry

+0

我不能設置(at),因爲我命名用戶,所以(at)s已存在!class KundeViewController; class KalenderViewController; class WunschViewController; interface RootViewController:UITableViewController { KundeViewController * kundeViewCon; KalenderViewController * kalenderViewCon; WunschViewController * wunschViewCon; } end – julesmummdry

回答

5

RootViewController已經有它的導航控制器 - 你在app代理中創建它。選擇單元格時創建新的導航控制器沒有任何意義。它可能應該看起來更像是這樣的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    switch ([indexPath row]) { 
     case 0: 
      [self.navigationController pushViewController:kundeViewCon animated:YES]; 
      break; 
     case 1: 
      [self.navigationController pushViewController:kalenderViewCon animated:YES]; 
      break; 
     case 2: 
      [self.navigationController pushViewController:wunschViewCon animated:YES]; 
      break; 
    } 
} 

而且,只要確保當你調用-pushViewController:animated:視圖控制器(即kundleViewConkalenderViewCon & wunschViewCon)是非零。它們看起來像實例變量或特性 - 只需確保在代碼中早些分配/初始化它們,如在-viewDidLoad中。

+0

非常感謝。我真的沒有alloc/init之前我的其他ViewControllers。現在它工作了! – julesmummdry

1

您不必創建新的UINavigationController。您需要從當前窗口獲取控制器。

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

其中yourController是你實例化的UIViewController之一(kundeViewCon,kalenderViewCon或wunschViewCon)

+0

謝謝你,是的,它的工作原理,我需要分配/初始化我的其他控制器。快樂! – julesmummdry

1

,讓Google:

這也可能發生,如果你沒有你的視圖控制器連接到:

"<Your Project> App Delegate"

如果你不這樣做,那麼你的控制器不會被初始化。

您還需要在類視圖控制器的重命名爲相應的.h/.m文件:

打開廈門國際銀行文件 - >選擇您的ViewController - >進入「身份檢查」 - >鍵入 Textfield「Class」對應的.h/.m文件的名稱。

您的視圖控制器連接到App 通過右鍵單擊並拖動從... AppDelegate中到您的ViewController enter image description here 上相應的條目釋放後點擊: enter image description here

相關問題