在自定义表视图单元格中执行操作将不起作用

时间:2014-04-06 22:17:37

标签: ios objective-c uitableview uiviewcontroller

我有一个自定义表格视图单元格类。在单元格中,我有一个UIButton。当我单击单元格中的那个按钮时,我想显示一个弹出视图,实际上我正在使用RNBlurModalView

因为它是UITableViewCell - 类我无法使用self,所以我尝试在自定义单元格中创建UIViewController,如下所示:

__weak UIViewController *ctrl;

显示弹出窗口的代码如下:

-(IBAction)openView {
    RNBlurModalView *modal = [[RNBlurModalView alloc] initWithViewController:ctrl title:@"Title" message:@"Hello"];
    [modal show];
}

因此,我试图使用initWithViewController:self代替initWithViewController:ctrl。但是当我点击按钮时没有任何反应。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

自定义tableView单元格是UIView的子类,您希望在其中显示UIViewController不正确。你必须告诉包含当前tableView的viewController为你做的工作。我建议你使用委托模式将消息传递给viewController。 如:

cell.delegate = self; // self is the current view controller

实现委托方法

- (void)showTheModalView
{
   RNBlurModalView *modal = [[RNBlurModalView alloc] initWithViewController:ctrl title:@"Title" message:@"Hello"];
   [modal show];
}

并在单元格实现中

-(IBAction)openView {
//RNBlurModalView *modal = [[RNBlurModalView alloc] initWithViewController:ctrl title:@"Title" message:@"Hello"];
//[modal show];
[self.delegate showTheModalView];

}

宣布代表

@protocol SomeDelegate <NSObject>
- (void)showTheModalView;
@end