2012年10月28日 星期日

利用Storyboard ID設定View Controller的識別ID

在App程式設計入門的13-17頁,介紹了如何利用instantiateViewControllerWithIdentifier:建立controller。


MasterDetailTestDetailViewController *viewController =
        [self.storyboard instantiateViewControllerWithIdentifier:@"Poem"];


其中的關鍵在於在storyboard裡替View Controller取個好名字,也就是它的Identifier,如此到時候才能在程式裡指定建立的View Controller為何。

原本設定Id的方式如下。先切換到Detail View Controller的Attributes Inspector分頁,然後將Identifier欄位設為Poem。



不過在最新的Xcode 4.5裡,如同梁朝偉的一天一點愛戀,滄海已成桑田,設定的地方已經改變。現在我們要切換至Identity Inspector頁面(第三個Icon),設定Storyboard ID ( 如下圖所示)




執行App:

只要設定了Storyboard ID,原來的程式碼將順利地執行,我們又可以再一次提升文藝氣息,欣賞大詩人李商隱的錦瑟了。




4 則留言:

  1. 請問我改了!!
    怎麼還是錯!!
    跟我說Application tried to push a nil View Controller on target !!
    難不成還要alloc!!

    回覆刪除
    回覆
    1. 你可以將完整的程式專案寄到我的信箱嗎? 我可以幫你看看

      我的信箱是apppeterpan@gmail.com

      刪除
  2. 請問,如果使用這個方法(instantiateViewControllerWithIdentifier)將xib(假設名稱為originalXib)連接上storyboard,是不是有比較奇特的方法可以回到上一層(originalXib)?

    我嘗試使用dismissviewcontrolleranimated但結果為一片黑><

    感謝

    回覆刪除
    回覆
    1. 要怎麼回到上一層,是由你如何進入下一層來決定的。如果是用pushViewController:animated:,回到上一層則必須呼叫popViewControllerAnimated:。如果是用presentModalViewController:animated:,回到上一層則必須呼叫dismissModalViewControllerAnimated:。

      刪除