2012-03-02 62 views
0

我似乎無法弄清楚這一點對我的生活。我有一個自定義表格視圖單元格,在該單元格中我配置了幾個按鈕。每個按鈕通過故事板連接到其他視圖控制器。我最近刪除了這些segues並放置了一個pushViewController方法。在不同的視圖之間來回切換,但是目標視圖控制器沒有顯示任何東西!作爲示例,我有一些代碼。與pushViewController更換故事板Segue公司引起奇怪的行爲

按鈕具有此方法集:

[cell.spotButton1 addTarget:self action:@selector(showSpotDetails:) forControlEvents:UIControlEventTouchUpInside]; 
// etc... 
[cell.spotButton4 addTarget:self action:@selector(showSpotDetails:) forControlEvents:UIControlEventTouchUpInside]; 
// etc... 

showSpotDetails方法包含以下代碼:

- (void)showSpotDetails:(id)sender 
{ 
    // determine which button (spot) was selected, then use its tag parameter to determine the spot. 
    UIButton *selectedButton = (UIButton *)sender; 
    Spot *spot = (Spot *)[spotsArray_ objectAtIndex:selectedButton.tag]; 

    SpotDetails *spotDetails = [[SpotDetails alloc] init]; 
    [spotDetails setSpotDetailsObject:spot]; 
    [self.navigationController pushViewController:spotDetails animated:YES]; 
} 

細節VC確實接收的對象數據。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSLog(@"spotDetailsObject %@", spotDetailsObject_.name); 
} 

下面的NSLog方法確實輸出傳遞的對象。此外,詳情視圖控制器中的所有內容都是如此。細節VC沒有任何改變。它只是不會呈現任何東西,因爲我刪除了segue並添加了pushViewController方法。也許我錯過了pushViewController方法的東西?我從來沒有這樣做事,我嘗試總是使用塞格斯...

有什麼建議?

回答

3

歡迎來到真實的世界。以前,故事板是一個柺杖;你隱藏了關於視圖控制器如何工作的真實事實。現在你正試圖扔掉那個柺杖。好!但現在你必須學會​​走路。 :)這裏的關鍵是這一行:

SpotDetails *spotDetails = [[SpotDetails alloc] init]; 

SpotDetails是一個UIViewController子類。你在這裏沒有做任何事情會導致這個UIViewController有一個視圖。因此,你正在結束一個空白的通用視圖!如果你想要一個UIViewController有一個觀點,你需要它的視圖莫名其妙。例如,你可以借鑑稱爲SpotDetails.xib在筆尖的圖,其中文件的所有者是一個SpotDetails實例。或者,您可以在覆蓋viewDidLoad的代碼中構建代碼中的視圖內容。細節是UIViewController的文檔中,或者甚至更好,看我的書,它告訴你所有關於視圖控制器如何得到它的觀點:

http://www.apeth.com/iOSBook/ch19.html

之前沒有出現這個問題的原因是你提請在相同的筆尖作爲視圖控制器(即故事板文件)的視圖。但是當你alloc-init一個SpotDetails,那就是與故事板文件中的那個不一樣的實例,所以你沒有得到那個視圖。因此,一種解決方案可以是加載故事板並獲取 SpotDetails實例,故事板中的實例(通過調用instantiateViewControllerWithIdentifier:)。我將解釋如何做到這一點的位置:

http://www.apeth.com/iOSBook/ch19.html#SECsivc

+0

哇馬特,非常感謝!我正在讀你的書,學習走路=) – ElasticThoughts 2012-03-02 15:51:42

+0

很酷,謝謝。我希望我已經正確地確定了問題的根源。 – matt 2012-03-02 17:25:04

相關問題