2013-03-13 64 views
0

在UITableView上推送到詳細視圖控制器,無論我做什麼prepareForSegue都無法獲取所選的行。我曾嘗試過:在UINavigationView/TableView中嵌入的自定義UIScrollview崩潰 - 在動畫上

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

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

但是這個出現了零。我曾嘗試:

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; 

的事情是,發件人是未來通過,因爲我可以從日誌中看到:

Sender is <ARASpecialCell: 0x75cd6d0; baseClass = UITableViewCell; frame = (0 44; 320 44); text = 'Late Night'; autoresize = W; layer = <CALayer: 0x75c98c0>> 

特殊的細胞,是因爲我試圖子類細胞並添加公共財產,但有訪問它的問題。

我試圖剛剛得到的文本標籤和使用,但所產生的錯誤:

"property "textlabel" not found on object of type '__strong id'" 

我試過「選定行的索引路徑」加載下一個視圖控制器,但是詳細視圖控制器從故事板上的另一個設置,這將是一個混亂重新配置。

這個TableViewController沒有什麼特別之處。任何有什麼問題的建議,將不勝感激。

回答

0

您需要@property在您的控制器中保存選定項目。例如,您選擇單元格並在didSelectCellAtIndexPath中將適當的數據對象保存在selectedItem屬性中。然後,您必須調用您在界面構建器中創建的segue。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.selectedItem = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    [self performSegueWithIdentifier:@"Item Details Segue" sender:self]; 
} 

,然後在performSegueWithIdentifier你可以做你不想和任何將selectedItem:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"News Details Segue"]) 
    { 
     NewController *controller = segue.destinationViewController; 
     NewController.item = self.selectedItem; 
    } 
} 
+0

太謝謝你了。我至少犯了兩個錯誤: – 2013-03-14 01:26:32

+0

(多個意見無意) 1)第一個,頭腦裏的錯誤,是我在衝突中推動新的視圖控制器在'didSelectARowAtIndexPath'中,我忘了它仍然是必要的調用它來獲取索引路徑。 2)也許我犯了錯誤1,因爲'didSelectARow ...'沒有被調用,因爲我把segue直接連接到table view單元格。我可以看到一些明顯的好處,如果用一個表格視圖製作一個全定製的菜單,這不是直觀的。掛在桌子上固定它。 – 2013-03-14 01:33:55

相關問題