fra*_*yer 12 iphone interface-builder uitoolbar
我有一个带有各种图像按钮的工具栏,在Interface Builder中创建.
我希望能够以编程方式在按下时用活动指示器替换其中一个按钮,然后放回原始按钮,但在活动完成时将其颜色从白色更改为黄色.
是否可以使用IB构建的工具栏,或者我是否必须以编程方式和自定义视图构建整个工具栏?
Aar*_*ron 26
这是我在类似情况下所做的一个例子.我想使用Interface Builder构建工具栏,但根据是否"检查"来切换其中一个BarButtonItem.在这个例子中,有几个关键的事情需要注意.为头文件中的类定义了以下2个成员变量:
NSMutableArray *toolbarItems;
IBOutlet UIToolbar *toolbar;
NSUInteger checkUncheckIndex;
Run Code Online (Sandbox Code Playgroud)
当我想更新已检查状态时,我调用此函数...请注意,当单击UIToolbar中的特定按钮时,会调用一个名为checkUncheckClicked的选择器.并且UIToolbar被设置为工具栏的IBOutlet.或者,您可以将UIBarButtonItem连接为插件本身,并将其用作逻辑来标识按钮的索引,或者就此而言,如果事物不会随时间发生变化,您可以对按钮的索引进行硬编码.最后,有一个checked.png和unchecked.png交替,它包含在项目中.
- (void)updateBarButtonItemChecked:(BOOL)checked {
if (toolbarItems == nil) {
toolbarItems = [[NSMutableArray arrayWithArray:toolbar.items] retain];
checkUncheckIndex = -1;
for (NSUInteger i = 0; i < [toolbarItems count]; i++) {
UIBarButtonItem *barButtonItem = [toolbarItems objectAtIndex:i];
if (barButtonItem.action == @selector(checkUncheckClicked)) {
favoriteIndex = i;
break;
}
}
}
if (checkUncheckIndex != -1) {
UIBarButtonItem *barButtonItem = [[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:checked ? @"checked.png" : @"unchecked.png"]
style:UIBarButtonItemStylePlain target:self action:@selector(checkUncheckClicked)] autorelease];
[toolbarItems replaceObjectAtIndex:checkUncheckIndex withObject:barButtonItem];
toolbar.items = toolbarItems;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,toolbarItems和工具栏应该在你的dealloc中为类释放.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
25251 次 |
| 最近记录: |