1

尝试显示 ActionSheet 时收到以下错误...

2012-11-16 04:07:03.878 MKS WebTech[814:c07] -[mksWorkOrderViewController _presentActionSheet:asPopoverFromBarButtonItem:orFromRect:inView:withPreferredArrowDirections:passthroughViews:backgroundStyle:animated:]: 无法识别的选择器发送到实例 0x75a5950

- (IBAction)ActionClick:(id)sender {

    popupSheet = [[UIActionSheet alloc] init];

    [popupSheet setDelegate:self];
    [popupSheet addButtonWithTitle:@"Contact List"];
    [popupSheet addButtonWithTitle:@"Zone Descriptions"];
    [popupSheet addButtonWithTitle:@"Zone Testing"];
    [popupSheet addButtonWithTitle:@"Panels"];
    [popupSheet addButtonWithTitle:@"Time Sheet"];
    [popupSheet addButtonWithTitle:@"Inventory"];
    [popupSheet addButtonWithTitle:@"Other Appt."];
    [popupSheet addButtonWithTitle:@"Alarm History"];
    [popupSheet addButtonWithTitle:@"Service History"];
    [popupSheet addButtonWithTitle:@"Complete"];
    [popupSheet addButtonWithTitle:@"Cancel"];
    [popupSheet setCancelButtonIndex:10];
    // Prepare your action sheet
    [popupSheet showFromBarButtonItem:bntAction animated:NO];

    [popupSheet release];
}

错误发生“showFromBarButtonItem:bntAction”我也尝试使用发件人但结果相同

canPerformAction 也可以毫无问题地触发...

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    return YES;
}
4

2 回答 2

1

我曾经遇到过这个问题,情况不一样,但对我来说,这有效:

  1. 转到界面生成器
  2. 检查所有对象,对我来说问题是我将一个对象连接到一个后来删除的变量,所以它不存在。

结论:我已将一个对象连接到一个不存在的变量。

否则,代码看起来不错:)

于 2012-12-08T09:04:35.763 回答
0

对于将来遇到这种情况的任何其他人(就像我刚才所做的那样):问题是 UIActionSheet 会在每个响应者链上调用 -canPerformAction:@selector(_presentActionSheet:asPopover... etc etc)。

因此,由于控制器错误地响应 YES,UIActionSheet 继续并尝试调用该方法,实现不存在,并且您遇到了错误。

正确的解决方法是重新实现您的 -canPerformAction:withSender: 以仅对您实际处理的事情返回 YES。

于 2014-05-07T20:54:27.893 回答