如何以编程方式获取UIBarButtonItems的状态?

时间:2012-06-26 14:32:18

标签: ios state uibarbuttonitem uicontrol

使用诸如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,但我怎么做我想在这里做的事情?

2 个答案:

答案 0 :(得分:1)

如果您想要更好地控制UIBarButtonItems,最好的办法是将其重新创建为UIButtons(使用自定义艺术等),然后使用-initWithCustomView UIBarButtonItem 1}}从实际的UIViews创建按钮项目。

这将使您可以完全访问常用的按钮交互方法:唯一的缺点是默认情况下您将无法获得漂亮的条形按钮样式,并且您必须自己为此提供艺术。

答案 1 :(得分:0)

之前我遇到过类似的问题。我无法解决它,所以我继续前进。这是我做的:

使用ToolBar而不是导航栏,然后在工具栏中使用UIButton而不是UIBarButtonItem。