使用非tableview主机类

时间:2015-12-23 08:02:30

标签: ios objective-c uitableview fppopover

1)我有一个由视图控制器托管的简单表视图和由自定义UITableViewCell类托管的单元。我的单元格上的一个按钮放下一个菜单(一个简单的表格视图控制器从非主持人加载到图片'类使用FPPopoverMenu)。

2)问题是我想在下拉菜单行选择中更新我的按钮背景图像,这涉及我的图片下拉菜单tableview类'和我的自定义表格查看单元格类'完全抛弃我的自定义主机UITableViewCell

3)我尝试使用NSNotification之类的,我成功地做了一个简单的场景,只涉及主机类和下拉菜单类,但现在它是自定义tableview单元格(这是一个重复实体)和我想要的下拉类沟通..请帮忙。我设置了NSNotification但背景图片保持不变,意味着通知未及时到达/无法及时到达。

4)显然我需要10个声望来发布图片(: - []所以这里是链接:

enter image description here

如图所示,我已经在下拉菜单中发出了通知,当按下隐藏时,背景应该改变,否则,如果显示按下它应该是绿色,如图所示......我之前做过但不是为我做任何事情。任何帮助将不胜感激。提前谢谢你!

1 个答案:

答案 0 :(得分:1)

要实现这一目标,您可以使用块。

您需要添加

@property (nonatomic, copy) void (^didSelectAction)(NSIndexPath *indexPath);

查看popover中显示的控制器。

而不是tableView: didSelectRowAtIndexPath:调用此块

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.didSelectAction)
        self.didSelectAction(indexPath);
}

因此,当您创建一个popover时,您应该提供额外的处理程序。 像这样的东西

向按钮添加新操作

- (UITableViewCell *) tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
    [[cell button] addTarget:self action:@selector(showPopoverFromButton:) forControlEvents:UIControlEventTouchUpInside];
}

- (void) showPopoverFromButton:(UIButton *)sender {
    //Your table view which is shown in popover
    UITableViewController *controller = [[UITableViewController alloc] init];
    [controller setDidSelectAction:^{
         [sender setBackgroundColor:[UIColor redColor]];
    }];
    FPPopoverMenu *popover = [[FPPopoverController alloc] initWithViewController:controller];        
    [popover show];
}