17

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

来自我的 IB 的图片:

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

IB截图

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

[ setValue:forUndefinedKey:]: 这个类对于 key accessoryActionSegueTemplate 不符合键值编码

我认为这可能是单元格的重用标识符有问题。

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

4

5 回答 5

28

当我从原型单元的详细附件按钮 ctrl 拖动一个 segue 到下一个视图控制器时,我遇到了这个问题。因此,我从表格视图控制器本身进行了拖动,并添加了一些代码。

目标-C:

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

斯威夫特 3.0:

func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {
    performSegue(withIdentifier: "EditUser", sender: tableView.cellForRow(at: indexPath))
}

这适用于 iOS 5.0 - 10.x

于 2012-10-21T17:16:28.020 回答
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/AppendixADprecatedAPI.html#//apple_ref/occ/instp/UITableViewCell/accessoryAction

于 2012-09-28T12:14:25.333 回答
1

我刚刚遇到了同样的问题。在 iOS 6 上运行良好,在 5.1 上崩溃。

我解决它的方法是使用标准UITableViewCell并从 a 中创建附件按钮UIButton,我在其上放置了一个 segue。

于 2012-10-20T19:40:21.347 回答
1

在 iOS 5.x 上,当您在情节提要中创建弹出框样式 segue 并且(在我的情况下)将其锚定到 UITableViewCell 时,也会发生此错误。

在这种情况下,错误消息是完全误导性的红鲱鱼。

我假设 iOS 5.x 不支持锚定弹出框 segues。

于 2013-02-19T19:14:23.970 回答
-2

将导航控制器从对象库拖到您的故事板文件中并尝试这样做,它应该可以工作。您的下一个视图应该有导航控制器。

于 2012-09-27T08:46:35.623 回答