我正在使用Storyboard。我已经读过SO,当你处理自定义tableviewcells时你不能使用segues,并且正如预期的那样,它不起作用。即使我选择自定义单元格,它也不会触发任何内容。
所以我一直在尝试使用didSelectRowAtIndexPath,使用下面的代码,但现在它只是推动一个黑色背景的完全黑屏。显然,我做错了什么。如何使用自定义tableviewcell的“选择行事件”推送到新的视图控制器?
我将添加在Storyboard中声明和设计SecondViewController的事实。我删除了它的segue所以它只是漂浮在故事板中。
- (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 :(得分:1)
您应该完全能够使用Storyboard从自定义单元格中推送新的视图控制器。前几天我做到了这一点。简单选项 - 从自定义单元格单击到故事板中的新视图控制器
答案 1 :(得分:0)
我意识到当你使用故事板时会出现很多问题,并且你正试图混合使用故事板和#34; segues"用" didselectrowatindexpath"式推送视图。你必须走一条路。当我完全转换为segues时,一切都完美无瑕。
我现在的方法是不使用didSelectRowAtIndexPath并使用segues代替故事板,如下所示。只需使用storyboard连接所有内容(例如从自定义单元格拖动到下一个视图控制器并命名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];
}
}