我的游戏视图控制器 UIButton 有 IBOutlets,需要更好地组织

Posted

技术标签:

【中文标题】我的游戏视图控制器 UIButton 有 IBOutlets,需要更好地组织【英文标题】:I have IBOutlets for my game view controller UIButtons that need to be organized better 【发布时间】:2014-04-03 22:15:30 【问题描述】:

我的UIButtonsIBOutlets,如下所示。这样持续30次。我想知道是否有一种方法可以使我不必像这样列出每个按钮插座并使其更有条理?

如果有人能指出我正确的方向,我将不胜感激。

@property (weak,nonatomic) IBOutlet UIButton *level1Button;
@property (weak,nonatomic) IBOutlet UIButton *level2Button;
@property (weak,nonatomic) IBOutlet UIButton *level3Button;

【问题讨论】:

为什么需要这些网点?你是如何使用它们的? 希望我的回答能帮到你 【参考方案1】:

您可以使用奥特莱斯系列,而不是很多奥特莱斯。在您的 .h 文件中:

@property (weak, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;

然后,您可以控制并拖动按钮到该行,它们都将按照您拖动它们的顺序出现在数组中。

【讨论】:

谢谢,不胜感激,我会尽快接受答复。从来不知道这种方法甚至存在。【参考方案2】:

另一个选项是(例如 6 UIButtons):

创建按钮。例如viewDidLoad:

//This is an array with your buttons positions
self.cgPointsArray = @[[NSValue valueWithCGPoint:CGPointMake(25, 130)],[NSValue valueWithCGPoint: CGPointMake(70,  130)],
                       [NSValue valueWithCGPoint:CGPointMake(115,  130)],[NSValue valueWithCGPoint:CGPointMake(160,  130)],
                       [NSValue valueWithCGPoint:CGPointMake(205,  130)],[NSValue valueWithCGPoint:CGPointMake(250,  130)]];

// for loop to allocate the buttons
for (int i = 0; i < [self.cgPointsArray count]; i++)

    NSValue *value = [self.cgPointsArray objectAtIndex:i];
    CGPoint point = [value CGPointValue];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(point.x, point.y, 20, 20);
    [button setBackgroundColor:[UIColor blueColor]];
    [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    button.tag = i;
    [self.view addSubview:button];

然后您可以通过tags in 管理事件:

- (void) buttonClicked: (id) sender

    UIButton *tempButton = (UIButton*) sender;
    int tag = tempButton.tag;

    if (tag == 0)
    
        //Do something
    
    else if (tag == 1)
    
        //Do something
    
    else if (tag == 2)
    
        //Do something
    
    else if (tag == 3)
    
        //Do something
    
    else if (tag == 4)
    
        //Do something
    
    else if (tag == 5)
    
        //Do something
    

【讨论】:

以上是关于我的游戏视图控制器 UIButton 有 IBOutlets,需要更好地组织的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义 UIControl 中按下的 UIButton 传递给我的视图控制器?

使父视图控制器可以访问子视图中的 UIButton

UIButton 保持突出显示,直到 UITableView 结束滚动

UIScrollView下的UIButton没有响应触摸

关于在 View 上向 UIButton 添加目标的 MVC 实践

我的 UIButton 在 xib 中发生了啥?