gpt4 book ai didi

ios - 如何以编程方式将 UIButton 添加到 UIToolBar?

转载 作者:可可西里 更新时间:2023-11-01 04:23:03 25 4
gpt4 key购买 nike

我已经使用 Interface Builder 添加了工具栏,但我需要在运行时/有条件地添加按钮。我没有收到任何错误,但我的动态按钮没有出现在工具栏上。我已经验证 arrayOfModulesScreens 加载了我需要的数据。至少那是有效的(:))。我是否需要将按钮添加到 UIView,然后将该 View 添加到工具栏?只是大声思考。也许有更好的方法开始?预先感谢导致解决的任何线索。

CustomFormController.h

@interface CustomFormController : UIViewController { 
UIToolbar *screensBar;
}

CustomFormController.m

EPData *epData = [[EPData alloc] init];
NSArray *screens = [epData loadPlistIntoArray:@"Screens"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"process_module_id == %@", process_modulesID];
NSArray *arrayOfModulesScreens = [screens filteredArrayUsingPredicate:predicate];

for(int i=0; i < [arrayOfModulesScreens count]; i++) {
NSDictionary *dictRow = [arrayOfModulesScreens objectAtIndex:i];
UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
[button setTitle:[dictRow objectForKey:@"screen_title"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[screensBar addSubview:button];
}

最佳答案

如果您真的想向工具栏添加一个 UIBarButtonItem(而不是 UIButton),您只需创建一个或多个 UIBarButtonItem,将它们放在 NSArray(或 NSMutableArray)中,然后将该数组分配给 items 工具栏的属性。参见 the UIBarButtonItem documentation了解详情。使用上面的代码,可能看起来像这样:

    NSMutableArray *items = [NSMutableArray array];
for (int i = 0; i < [arrayOfModulesScreens count]; i++) {
NSDictionary *dictRow = [arrayOfModulesScreens objectAtIndex:i];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:[dictRow objectForKey:@"screen_title"]
style:UIBarButtonItemStyleBordered
target:self
action:@selector(buttonClick:)];
[items addObject:button];
[button release];
}
screensBar.items = items;

(当然,您随后需要更改 buttonClick: 以期望使用 UIBarButtonItem 而不是 UIButton)。

如果您真的想在其中放置一个 UIButton,您首先需要将 UIButton 包装在一个 UIBarButtonItem 中,如下所示:

UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];

然后将项目添加到工具栏,如上所示。


至于为什么您的按钮没有出现在您发布的代码中,问题是 UIButton 的 buttonWithType: 创建了一个零宽度和零高度的按钮。您需要调整按钮的大小(手动或在设置标题后使用 sizeToFit)以使其显示。修复后,您会看到按钮在父 View 的左上角全部重叠;您需要根据需要手动定位它们。

关于ios - 如何以编程方式将 UIButton 添加到 UIToolBar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7081221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com