我正在尝试通过IB创建segue,在tableView中按下单元格附件时切换视图。
我IB的图片:
1.我从tableviewcontroller的单元格拖动到另一个视图并选择Accessory Action - >推
当我正在运行我的项目时,我收到错误:
[setValue:forUndefinedKey:]:此类与keyActionSegueTemplate不符合键值编码
我认为这可能是单元格的reuseIdentifier出错了。
我的cellForRowAtIndexPath:
方法:
static NSString *CellIdentifier = @"champion cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSString *cellIconName = ((championList *)[self.champions objectAtIndex:indexPath.row]).championImage;
UIImage *cellIcon = [UIImage imageNamed:cellIconName];
[[cell imageView] setImage:cellIcon];
cell.imageView.frame = CGRectMake(0.0f, 0.0f, 70.0f, 70.0f);
cell.imageView.layer.cornerRadius = 7;
[cell.imageView.layer setMasksToBounds:YES];
cell.textLabel.text = ((championList *) [self.champions objectAtIndex:indexPath.row]).championName;
cell.detailTextLabel.text = ((championList *) [self.champions objectAtIndex:indexPath.row]).championId;
return cell;
我可以使用performSegueWithIdentifier:方法作为此问题的解决方案,但我想弄清楚为什么我在IB中遇到辅助操作问题。
答案 0 :(得分:27)
当我将原型单元格的细节附件按钮中的segue拖动到下一个视图控制器时,我遇到了这个问题。所以我从表视图控制器本身进行了拖动,并为其添加了一些代码。
<强>目标-C:强>
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier: @"EditUser" sender: [tableView cellForRowAtIndexPath: indexPath]];
}
Swift 3.0:
func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {
performSegue(withIdentifier: "EditUser", sender: tableView.cellForRow(at: indexPath))
}
适用于iOS 5.0 - 10.x
答案 1 :(得分:2)
当我在iPod Touch上运行iOS 5上的应用程序而不是iPhone 5上的iOS 6上时,我收到此错误。
文档说在iOS 3.0中已弃用附件操作。该错误似乎是在iOS 6中显示和允许的。
您能确认您正在测试的iOS版本吗?
答案 2 :(得分:1)
我遇到了同样的问题。适用于iOS 6,在5.1上崩溃。
我解决它的方法是使用标准UITableViewCell
并从UIButton
创建一个附件按钮,我放了一个segue。
答案 3 :(得分:1)
在iOS 5.x上,当您在故事板中创建一个popover样式segue时会出现此错误,并且(在我的情况下)将其锚定到UITableViewCell。
在这种情况下,错误信息是一种完全误导性的红鲱鱼。
我假设iOS 5.x不支持锚定的popover segues。
答案 4 :(得分:-2)
将navigationController从对象库拖到故事板文件中并尝试执行此操作,它应该可以正常工作。您的下一个View应该有导航控制器。