2012-01-15 55 views
0

我有一個問題,在iOS應用程序中將對象從TableView傳遞給ViewController。我正在使用故事板並選擇了ARC,並在我的「prepareForSegue」方法中傳遞了委託。在prepareForSegue方法中傳遞一個委託

這是我在我的TableView中的代碼,通過推塞格斯到另一個視圖控制器:

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

    NextViewController *vc = (NextViewController *)[segue destinationViewController]; 

    vc.managedObjectContext = managedObjectContext; 

    if ([[segue identifier] isEqualToString:@"EditCategory"]) 
    { 

    NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row]; 

    // I get a red warning which states "Cast of 'NSInteger' (aka 'int') to 'Entity' is disallowed with ARC" on this line: 
    [vc setEntity:(Entity *)selectedIndex]; 
    } 
} 

是否有人有我如何才能從TableView中到ViewController通過我的對象有什麼建議?我是新手編程,並嘗試過各種表達式,但似乎沒有任何工作。

回答

1

您遇到的錯誤與類型有關。

NextViewController顯然有一個方法稱爲-setEntity:需要一個對象類型Entity *。錯誤是因爲你試圖給-setEntity:一個錯誤類型的參數。你試圖給它一個NSInteger(這是一個數字如0,5,-999),但它想要一個Entity

您正在將數據從表視圖傳遞到NextViewController。你只需要執行下列操作之一:

  • 傳遞一個Entity-setEntity:(?是否Entity類也許 有一個構造函數的NSInteger
  • 添加到NextViewController的方法,它接受一個NSInteger,並呼籲,而不是-setEntity:
+0

感謝您指出我在正確的方向。我一直在試圖實現協議/委託方法,但我的managedObject出現「空」。我想我無法決定哪個視圖控制器實際上傳遞了managedObject。 ViewController上的選擇器的結果僅顯示在TableViewController上。我是否只需要從ViewController向TableViewController的一種方式傳遞managedObject?還是我需要在兩個方向傳遞managedObject? – PopUp 2012-01-17 21:30:28