如何以编程方式获得UIBarButtonItems的状态?(How do I programmati

2019-10-16 21:56发布

随着UIControl作为这样UIButton你可以使用类似myControl.state搞清楚是否控制目前被按下。

不过,我需要做一些相同的UIBarButtonItems (未来源于UIControl ),这样我可以从编辑,而他们中的一个被按下停止我的表。

这里是我的代码:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    //other checks
    for(int b=0; b<self.toolbar.items.count; b++)
    {
        UIControl *currentControl= [self.toolbar.items objectAtIndex:b];
        if(currentControl.state==UIControlStateHighlighted)
        {
            return NO;
        }
    }
    return YES;
}

很显然,这是行不通的,因为它假定UIBarButtonItems 可以作为被处理UIControls ,但我会怎么做我想在这里做什么?

Answer 1:

如果你想在你的更多的控制UIBarButtonItems做的最好的事情就是它们重新创建为UIButtons (使用定制艺术等),然后使用-initWithCustomViewUIBarButtonItem来从实际UIViews按钮项目。

这会给你完全访问常用的按钮相互作用的方法:唯一的缺点是,你不会在默认情况下拿到漂亮的酒吧按钮样式,你必须为这个自己提供的艺术。



Answer 2:

我以前也有类似的问题。 我不能修复它,让我感动的。 下面是我做的:

使用工具栏,而不是导航栏,然后在工具栏里面使用的UIButton代替的UIBarButtonItem。



文章来源: How do I programmatically get the state of UIBarButtonItems?