2014-11-04 67 views
1

我正在使用Storyboard。我讀過所以你不能在使用自定義tableviewcell的時候使用segues,並且如預期的那樣,它不起作用。即使我選擇一個自定義單元格,它也不會觸發任何內容。如何從自定義tableviewcell推送到新的視圖控制器

所以我一直試圖使用didSelectRowAtIndexPath來代替,使用下面的代碼,但現在它只是推動一個完全黑屏的黑屏背景。顯然,我做錯了什麼。我如何使用「選擇行事件」使用自定義tableviewcell推送到新的視圖控制器???

我將添加在Storyboard中聲明和設計SecondViewController的事實。我刪除了它的segue,所以它只是在storyboard中浮動。

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    SecondViewController *svc = [[SecondViewController alloc]init]; 
    [self.navigationController pushViewController:svc animated:YES]; 
} 

下面的一些代碼供參考。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *simpleCellIdentifier = @"JokeCustomCell"; 
    JokeCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleCellIdentifier]; 

    JokePL *joke = [self.jokeDataManager.jokes objectAtIndex:indexPath.row]; 

    cell.titleLabel.text = [NSString stringWithFormat: @"%@", joke.title]; 
    cell.scoreLabel.text = [NSString stringWithFormat: @"Score: %@", [self quickStringFromInt:joke.score]]; 
    cell.timeLabel.text = [self turnSecondsIntegerIntoMinuteAndSecondsFormat:joke.length]; 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"M/dd/yy"]; 

    cell.dateLabel.text = [NSString stringWithFormat: @"%@", [dateFormatter stringFromDate:joke.creationDate]]; 


    return cell; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 65; 
} 

回答

0

我意識到,當您使用故事板時會出現很多問題,並且您試圖將「segse」與「didselectrowatindexpath」推動觀點。你必須走一條路或其他。當我徹底轉換完成時,這一切都完美無瑕。

我目前的做法是不使用didSelectRowAtIndexPath,並使用segues而不是storyboard進行處理,如下所示。只需連接使用故事板的所有內容(例如按住ctrl拖動自定義單元格到下一個視圖控制器並命名segue)並在下面使用。您不必不必要地推送或分配視圖控制器。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"]) 
    { 
     // Get reference to the destination view controller 
     YourViewController *vc = [segue destinationViewController];  
     NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
     vc.whatevercustomproperty = whateverobjectarrayyouhave[path]; 
    } 
} 
1

您完全可以使用Storyboard從自定義單元中推送新的視圖控制器。我前幾天做到了。簡單的選項 - 點擊從自定義單元到故事板中的新視圖控制器

+0

這真是奇怪......也許是因爲我使用[self.tableView registerNib:[UINib nibWithNibName:@ 「JokeCustomCell」 捆綁:無] forCellReuseIdentifier:@ 「JokeCustomCell」];在viewDidLoad中? – 2014-11-04 22:42:52

+0

我猜我在實現這個自定義tableViewCell時不正確地設置了一些東西? – 2014-11-04 22:43:25

+0

啊我明白了。是的,我在Storyboard的表格視圖中使用了一個原型單元格 – 2014-11-04 22:43:48

相關問題