0

错误是:

2013-04-02 14:46:07.180 ECom[7855:c07] -[UITableViewController setItemRow:]: unrecognized selector sent to instance 0x768c770
2013-04-02 14:46:07.180 ECom[7855:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewController setItemRow:]: unrecognized selector sent to instance 0x768c770'

在方法 int 代码的最后一行:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"clPanelSegue"])
    {
        NSIndexPath *path = [self.tableView indexPathForSelectedRow];
        ECOMClPanelDetailViewController *detail = (ECOMClPanelDetailViewController*)segue.destinationViewController;
        NSLog(@"clPanelSeguePathRow = %d", path.row);
        [detail setItemRow:path.row];
    }
}

最后一行的方法是

-(void)setItemRow:(int)aItemRow
{
    clDetailItemRow = aItemRow;
}

无法理解出了什么问题。谁能帮忙?

4

2 回答 2

2

首先,您的详细信息面板似乎不是您认为的那样。根据错误消息,seque.destinationViewControlleris of class UITableViewController, not ECOMClPanelDetailViewController。这就是您需要首先追踪的内容。

其次,正因为如此,当您发送setItemView:消息时,它无法被解释并引发异常。

首先查看 `destinationViewController 的实例化位置(可能是您的 XIB 文件),并确保您设置了正确的类。

于 2013-04-02T10:58:26.500 回答
1

不是detailECOMClPanelDetailViewController,而是指向 UITableViewController。您可以在情节提要中检查 segue 的标识符,以确保您没有在标识符名称中犯错误。

于 2013-04-02T10:58:29.167 回答