我不会声称这是一个优雅的解决方案,但我设法通过将自定义按钮与NSArray arrayWithObjects:
每个按钮组分组来解决我的问题。
我添加了两种方法来模拟单选按钮的行为(在本例中为自定义颜色按钮):
-(void)setButtonSelected:(NSArray*) theButtons toColor:(NSString*)color {
[self clearAllButtons:theButtons];
for (ColorButton *button in theButtons) {
if ([button.color isEqualToString:color]) {
button.state = NSOnState;
}
}
}
-(void)clearAllButtons:(NSArray*) theButtons {
for (ColorButton *button in theButtons) {
button.state = NSOffState;
}
}
由于我的具体问题涉及一组以上需要唯一选择的按钮,因此我为组中的每个对齐选项(基本上是列)添加了数组。
- (void)clearColorConflicts:(NSArray*)theButtons forRow:(NSString*)row {
for (ColorButton *button in theButtons) {
if (![button.row isEqualToString:row]) {
if (button.state == NSOnState) {
button.state = NSOffState;
}
}
}
}
同样,它可能不是一个优雅的解决方案,但它在没有 IBOutletCollection 的情况下解决了我的问题。
我确实查看了 NSMatrix,但是当我将自定义按钮分组为矩阵时,我无法使用自定义图像按钮行为(on、off、hover_on、hover_off)。
列组可以通过两种原始方法处理,但是当行/类别选择被另一行中的选择清除时,我有额外的变量/默认值更新步骤。事后看来,我本可以在选择后检查每个组的状态。
我的问题可能是独一无二的,但我发布这个以防它帮助其他人。
我没有标记为已解决,因为我希望有人有比我更好的解决方案。