迭代多个复选框并获取所选标题

时间:2017-07-19 21:18:52

标签: objective-c macos cocoa checkbox

我有一个带有窗口的应用程序,其中包含可能包含100个复选框的框。

当我按下按钮时,我想构建所选复选框标题的字符串。

我知道我需要遍历所有复选框并获取标题,但我无法弄清楚如何做到这一点。任何指针都将非常感激。我知道如何使用绑定和标签,但有100个复选框,这只是疯了!

谢谢!

1 个答案:

答案 0 :(得分:1)

我建议您使用堆栈视图或集合视图。如果要使用简单的复选框,则必须将指针保留在数组中以进行迭代或将它们作为容器放在自定义视图中,在其中迭代其子视图。

此示例将指向您:

NSMutableArray *activeButtons = [NSMutableArray new];
for (NSView* subview in [self.container subviews])
    if ([subview isMemberOfClass:[NSButton class]] && [(NSButton*)subview state] == 1)
        [activeButtons addObject:[(NSButton*)subview title]];

NSString* text = [activeButtons componentsJoinedByString:@", "];
NSLog(@"Active: %@",text);

isMemberOfClass方法将确保只获取按钮而不是文本。如果在容器中还有其他按钮,您可以另外检查按钮类型以确保只获取复选框。有更快的方法,如枚举,但这是一个更好的起点imho。

注意:写在手机上...未经测试,请原谅可能的拼写错误(虽然经过双重检查)