0

我有六个屏幕按钮,它们的标题需要与 an 中的六个元素对应NSMutableArray,当数组中的值发生变化时,我也需要标题随之变化。我无法弄清楚如何为按钮创建不断更新的行,我对Objective-c 开发以及Xcode仍然很陌生。

我还需要确保当数组的特定索引处没有值时,无法单击该按钮

这是其中一个按钮的示例

- (IBAction)card1Pressed:(id)sender {
    if (self.userHasEnteredFirstNumber) { 
        if (!self.userHasEnteredSecondNumber) {
            self.secondNumber = [sender currentTitle];
        }
    }
    else{
        self.firstNumber = [sender currentTitle];
    }

}

最终目标是让用户按下两个按钮,然后选择天气来。在他们选择这四个操作之一后,数组中分配给按钮的值将被删除并替换为新数字。因此,一旦他们这样做了,数组中将只剩下 5 个数字,然后是 4,然后是 3..... 等等。

这些数字将被绘制并添加到NSMutable名为currentHand的数组中

更新:使用 UIOutletCollection 我将按钮链接到这样的方法图片的链接在这里“很抱歉不能直接发布它,但新用户必须有 10 的声誉才可以” 链接到声明和实施的照片使用 IBOutletCollection 的接口构建器

这是正确的吗?

关于 IBOutletCollection 的头文件的代码如下“请注意,这已连接到我想在界面生成器中使用它的六个按钮,上面显示了它的图片”

@property (nonatomic,retain) IBOutletCollection (UIButton)NSArray *buttonArray;

实现文件中关于 IBOutletController 的代码如下

@ synthesize buttonArray = _buttonArray;
4

2 回答 2

2

您想使用键值观察,请从 Apple 文档中查看: https ://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/ uid/10000177i

于 2012-07-23T18:32:30.177 回答
0

好吧好吧,基本上你有一个'Button'-Array,它的'Caption'由一个NSMutableArray提供,可以很容易地改变,对吗?

现在,这只是我的做法,可能有更好的解决方案,但这里是:

您需要一个“更改”接口,称为每次,您的 NSMutableArray 都会发生一些事情。例如(因为我不知道你的数组中到底是什么):

- (void) ChangeArray:(int)IDofElement (NSString *)newValue {
     [arr replaceObjectAtIndex:IDofElement withObject:newValue]; //Updates/Empties the indexed Element.
     if(newValue != nil) {   
         [buttons[IDOfElement] setText:newValue];
     }
     buttons[IDOfElement].enabled = (newValue != nil);      //Makes Button 'clickable'
}

像这样,每次更改您的数组中的值时,相应的标题也会更新。当然,您需要一组按钮才能使其工作,但我认为这不是大问题。

另一种可能的解决方案:保存对存储在数组中的对象内部按钮的引用,并且每当更改值时,也更改按钮的标题。

这有帮助吗?请注意,这不是“完美的解决方案”,而是我想出的。

另请注意,这只是我的想法,可能在某些方面有问题。但它应该能够为您指明大方向。

于 2012-07-23T18:39:00.480 回答