使用诸如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
,但我怎么做我想在这里做的事情?
答案 0 :(得分:1)
如果您想要更好地控制UIBarButtonItems
,最好的办法是将其重新创建为UIButtons
(使用自定义艺术等),然后使用-initWithCustomView
UIBarButtonItem
1}}从实际的UIViews创建按钮项目。
这将使您可以完全访问常用的按钮交互方法:唯一的缺点是默认情况下您将无法获得漂亮的条形按钮样式,并且您必须自己为此提供艺术。
答案 1 :(得分:0)
之前我遇到过类似的问题。我无法解决它,所以我继续前进。这是我做的:
使用ToolBar而不是导航栏,然后在工具栏中使用UIButton而不是UIBarButtonItem。