2011-10-29 47 views
25

我正在使用storyboards在ios5中創建應用程序。我有一個嵌入在導航控制器中的tableviewcontroller,當您單擊tableviewcontroller中的單元格時,應該將有關該單元格主題的一些細節傳遞給詳細視圖。我使用plist來填充tableview和detail視圖。我沒有使用故事板而是做得很好,但想要學習如何使用故事板。我有seque從tableviewcontroller去我的詳細信息視圖。如何通過seque ios5 storyboard uitableview中的數據傳遞詳細信息

我對塞克代碼:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"DetailViewControllerSeque"]) 
    { DetailViewController *detailViewController = [segue destinationViewController]; 
     NSString *path = [[NSBundle mainBundle] bundlePath]; 
     NSString *finalPath = [path stringByAppendingPathComponent:@"questList.plist"]; 
     NSArray *tempArray = [finalPath valueForKey:@"description"]; 
     NSString *descriptionString = [tempArray valueForKey:@"description"]; 
     detailViewController.detailDescriptionText.text = descriptionString;  
    } 
} 

感謝您的幫助。

+4

什麼是你的問題? –

回答

0

我得到了同樣的問題,還沒有解決它與故事板。但是,我認爲segue應該從單元格開始,而不是整個tableviewcontroller。如果您使用原型單元格,這可以工作 - 但我不知道代碼創建的單元格類型。也希望對這個主題有任何幫助。

編輯: 在http://kurrytran.blogspot.com/2011/10/ios-5-storyboard-and.html的教程建議,不存在segue解決方案,您仍然必須轉換到代碼中的詳細視圖。我不知道這是多麼正確,但我會這樣做,直到有人向我展示純故事板/賽格解決方案;)。

12

我得到了同樣的問題,隨後Ray Wenderlich教程的一部分,發現你需要選擇表格單元格和Ctrl-Drag到你的viewcontroller。然後在didSelectRowAtINdexPath中撥打performSegueWithIdentifier

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self performSegueWithIdentifier:@"mySegueId" sender:self]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
     NSLog(@"prepareForSegue: %@", segue.identifier );  
     if ([segue.identifier isEqualToString:@"mySegueId"]) 
     { 
      DetailController *detailController = segue.destinationViewController; 
      detailController.delegate = (id)self; 
      detailController.selected = selectedRow; 
     } 
} 
+0

謝謝,這正是我想要的!這裏有一個錯誤detailControllerController,不會讓我編輯或我自己修復它。 –

+0

謝謝你,夥計。 – SampathKumar

+0

這兩個答案幫助我,但我很驚訝,我也需要這一個。我認爲蘋果公司會這樣實施,它將足以將細胞與下一個場景連接起來,而不必告訴哪個階段執行......無論如何,它的工作原理。 – Heckscheibe

67

我有同樣的問題(缺乏與iOS5的經驗)。

事實證明,這是一個iOS5 SDK的示例應用程序,它有一個表格視圖,當表格單元格被點擊時使用segues:「Simple Drill Down」。

https://web.archive.org/web/20130513140140/http://developer.apple.com:80/library/ios/#samplecode/SimpleDrillDown/Introduction/Intro.html

你設定在表格單元格的SEGUE,並給它在故事板文件的名稱。

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

    /* 
    When a row is selected, the segue creates the detail view controller as the destination. 
    Set the detail view controller's detail item to the item associated with the selected row. 
    */ 
    if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) { 

     NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow]; 
     DetailViewController *detailViewController = [segue destinationViewController]; 
     detailViewController.play = [dataController objectInListAtIndex:selectedRowIndex.row]; 
    } 
} 
+0

謝謝你這個輝煌的答案! (+1) – filou

+0

非常感謝。一直堅持了幾個小時。謝謝! – Patrick

+3

這個答案需要被接受爲正確的。 – dbarros

1

不需要召喚: [self performSegueWithIdentifier:@"mySegueId" sender:self];

你可以使用NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];讓你選擇的信息,在你的- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{...}功能。

0

嘗試這種方式

名字你賽格瑞(從實現代碼如下細胞詳細視圖)。然後

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


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

     DetailViewController * detailViewController =segue.destinationViewController; 
     detailViewController =[self.yourTableViewDataArray objectAtIndex:[self.yourTableView indexPathForSelectedRow].row]; 

    } 

} 

不要忘了導入SecondViewController/DetailViewController

相關問題