KVO有两个UIButton

时间:2012-02-03 21:56:53

标签: iphone

我有一个自定义的UITableViewCell子类,它在UIPopoverController的UITableView中呈现。 UIPopoverController来自UIBarButtonItem。

当在UITableViewCell中进行选择时,我将NSNotification发送到呈现UIPopoverController的UIViewController类。表中的选择在我的viewController中更新了我的视图。

现在,需要另一个UIBarButtonItem与popover中UITableViewCell中的一个按钮完全相同。基本上用例是这个功能似乎是我们的popover中最常用的功能,他们想要一个简单的方法来从另一个按钮打开和关闭它。

所以我做的是创建一个新的UIBarButtonItem,并附加一个目标:

- (void)FilterOn:(id)sender {
    isFilterOn = !isFilterOn;
    if ([sender isKindOfClass:[UIBarButtonItem class]]) {
        UIBarButtonItem *filter = (UIBarButtonItem *)sender;
        if (isFilterOn) {
            [filter setTitle:@"Filter On"];
            [self DoFilter];
        }
        else {
            [aboutMeBBI setTitle:@"Filter Off"];
            [self ClearFilter];
        }

    }
}

所以这部分有效。它更新模型,按钮的标题发生变化。问题是,让我说我打开过滤器,然后在弹出窗口中,我关闭过滤器。我将通知传递给我的viewController类,它的正常更新方法处理过滤和一堆其他东西。我从弹出框中按下过滤器按钮时添加了这个简单的片段:

- (void)FilterSortOptionDidSelect:(NSNotification *)notification {
    NSDictionary *userDict = [notification userInfo];
    NSInteger theTag = [[userDict objectForKey:@"CellTag"] integerValue];

    switch (theTag) {
        case FILTER: {
                // update Model
                [self.FilterBarButtonItem setTitle:@"Filter off"];
            }
            break;
        default:
            break;
    }
}

这不是我想要的,因为如果我点击过滤器按钮,因为对于初学者,如果我点击“过滤器”按钮,它仍然会说“过滤器关闭”,并执行过滤关闭操作,然后,如果我再次点击它,它将对操作进行过滤。我尝试通过更改标题在switch语句中伪造它,但这不是我想要做的。我读了一些关于键值观察的内容,我不确定我是否可以在这里使用类似的东西,将我的按钮状态注册到UIPopoverController中UITableViewCell子类中的按钮状态。如果有人有任何想法会很棒。感谢。

0 个答案:

没有答案