2012-11-01 156 views
-1

我嘗試使用故事板與表視圖,繼續控制器視圖,應顯示我的圖片。問題在於,當我按下任何「單元格」時,應用程序會粉碎。故事板NSIndexPath

這是問題的代碼:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

    if([[segue identifier] isEqualToString:@"ShowPhoto"]) 
    { 
     DetailsViewController *dvc = [segue 
     destinationViewController]; 
     NSIndexPath *path = [[self tableView] indexPathsForSelectedRows]; 
     Photo *pic = [photosArray objectAtIndex:[path row]]; 

     [dvc setCureentPic: pic]; 
    } 
} 

問題與NSIndexPath行...我認爲,其原因在於我嘗試插件組到NSIndex。 xcode警告:不兼容的指針類型用'NSArray'類型的表達式初始化'NSIndexPath * __ strong'。

暗戀消息:無法識別的選擇器發送到實例[__NSArrayI行]。 我該如何解決問題?

回答

6

做閱讀文檔的方法here你叫而不是把對他們做什麼假設...

[[self tableView] indexPathsForSelectedRows] 

返回NSArrayNSIndexPath(由方式,即使沒有閱讀文檔 - 在Cocoa命名約定中,如果某些內容是複數,則它可以知道這個,那麼它接受或返回NSArray),因此發送它的消息NSIndexPath會崩潰。寫

NSIndexPath *path = [[[self tableView] indexPathsForSelectedRows] objectAtIndex:0]; 

相反,它會工作(如果有至少一個選定行 - 如果不是,你必須檢查數組爲空,否則將再次崩潰...)

順便說一下,編譯器甚至會告訴你問題是什麼......在嘗試編程之前,請嘗試開發一些常識,因爲如果沒有,你會拍攝自己和其他人的腳。

+0

謝謝,但現在當我檢查文檔我明白我寫錯了方法,正確的方法應該是: NSIndexPath * path = [[[self tableView] indexPathForSelectedRow]; – Dennis

+1

@丹尼斯但那你爲什麼不接受我的回答,接受另一個?這個答案基本上是一樣的,但沒有任何解釋... – 2012-11-01 11:44:23

+0

我接受了你的答案,我不知道爲什麼這樣取消你的答案也許是因爲我接受了其他人的答案呢? (我是新的在stackoverflow)。 – Dennis