从UIButton中的另一个类调用方法

时间:2015-02-10 03:32:21

标签: ios objective-c uibutton action custom-cell

我有一个自定义UITableViewCell,其中包含一个名为customCell.m的类。 (我没有使用xib。)在单元格中有一个按钮。有没有办法在mainVC.m文件上创建按钮操作,与customCell.m相对应?

更新

这是我尝试实现的代码。我做的是,我从mainVC.m调用了一个方法。

CustomCell.m

- (IBAction)myButton:(id)sender
{
    CategorieViewController *mainVC = [[CategorieViewController alloc] init];
    [mainVC myMethod];
}

MainVC.m

- (void)myMethod:(id)sender
{
    UITableViewCell *clickedCell = (UITableViewCell *)[[[sender superview] superview] superview];
    NSIndexPath *clickedButtonPath = [self.myTableView indexPathForCell:clickedCell];

    NSLog(@"%@", clickedButtonPath);
}
  

CategorieViewController myMethod]:无法识别的选择器发送到实例0x7fd2dbd52a00

     

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [CategorieViewController myMethod]:无法识别的选择器发送到实例0x7fd2dbd52a00'

1 个答案:

答案 0 :(得分:3)

您正在调用myMethod,但该方法实际上是myMethod:并将发件人作为参数。尝试更改:

[mainVC myMethod];

为:

[mainVC myMethod:sender];

此外,您当前传递给myMethod:作为参数的任何发件人都不会属于mainVC的tableview,因为您正在创建一个全新的CategorieViewController实例来执行从未加载方法调用及其表。

假设MainVC是可见的视图控制器,您可以更改:

CategorieViewController *mainVC = [[CategorieViewController alloc] init];

为:

UINavigationController *nav = (UINavigationController*)self.window.rootViewController;
CategorieViewController *mainVC = (CategorieViewController*)nav.visibleViewController;

使用加载的tableview获取当前MainVC实例。