辅助动作segue(UITableViewController)

时间:2012-09-27 08:33:49

标签: iphone objective-c ios xcode uitableview

我正在尝试通过IB创建segue,在tableView中按下单元格附件时切换视图。

我IB的图片:

1.我从tableviewcontroller的单元格拖动到另一个视图并选择Accessory Action - >推

IB screenshot

当我正在运行我的项目时,我收到错误:

  

[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中遇到辅助操作问题。

5 个答案:

答案 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版本吗?

https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITableViewCell_Class/DeprecationAppendix/AppendixADeprecatedAPI.html#//apple_ref/occ/instp/UITableViewCell/accessoryAction

答案 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应该有导航控制器。