Objective c 在按钮上显示数组元素

Objective c 在按钮上显示数组元素,objective-c,xcode4,uibutton,iboutlet,iboutletcollection,Objective C,Xcode4,Uibutton,Iboutlet,Iboutletcollection,我正在为一个本地学校系统开发一个教育游戏,在这个游戏中,学生们会看到六个数字,他们必须尝试使用尽可能多的数字来等于第七个数字,数字存储在一个名为currentHand的数组中,数字需要在屏幕上的按钮上显示为文本。问题是,当它们将数字组合在一起时,按钮上的值需要相应地更改。假设我添加两个按钮,一个按钮的值为1,一个按钮的值为2,值3被添加到数组中,值1和2被删除,然后一个按钮需要变为不可见,另一个按钮需要用值3更新。有人告诉我用一个IBOutletCollection来尝试这个方法,但因为我对ob

我正在为一个本地学校系统开发一个教育游戏,在这个游戏中,学生们会看到六个数字,他们必须尝试使用尽可能多的数字来等于第七个数字,数字存储在一个名为currentHand的数组中,数字需要在屏幕上的按钮上显示为文本。问题是,当它们将数字组合在一起时,按钮上的值需要相应地更改。假设我添加两个按钮,一个按钮的值为1,一个按钮的值为2,值3被添加到数组中,值1和2被删除,然后一个按钮需要变为不可见,另一个按钮需要用值3更新。有人告诉我用一个IBOutletCollection来尝试这个方法,但因为我对objective C还是很陌生,我不知道如何使用一个IBOutCollection来实现这个目的,我有一个想法,创建一个方法,将每个按钮绑定到数组中的一个元素,因为列表的大小会缩小,按钮的数量也会减少,所以如果你有数字的话

{1,2,3,4,5,6}
每个按钮都会有一个值分配给它们,但随着列表变为

{1,2,3,4,11}
显示数字6的按钮将消失,保持数字5的按钮将变为11,但正如我所说,我不知道如何实现这一点

由于我不能显示这样一个新成员的图片,我已将其中一个链接到我如何尝试设置

下面是实例化currentHand的代码

-(NSMutableArray *) currentHand{
    if (_currentHand == nil) {
        _currentHand = [[NSMutableArray alloc]init];

    }
    self.currentHand = self.myDeck.giveHand;
    return _currentHand;

}

如果您对此有任何建议,我们将不胜感激,敬请提前垂询。

以下是解决此问题的一种方法。正如我在评论中所说,我认为没有必要使用数组来跟踪数字,因为您只需单击一个按钮来提供标题的原始数字,或者需要一个IBOutletCollection

因此,在下面的示例中,我创建了一个视图项目,在视图控制器的视图中添加了6个按钮,将它们的所有标记设置为1,并将它们全部连接到一个操作方法buttonPressed:。我没有为按钮使用任何插座,因为你可以通过循环视图的子视图来完成你需要做的事情-在本例中,标签并不是真正必要的,但是如果你的视图中有任何其他按钮,标签将是区分这6个游戏按钮与其他按钮的一种方式

我不确定这是否正是您想要的外观,但请尝试一下,看看是否接近

@interface ViewController : UIViewController

@property (assign) int total;
@property (retain) UIButton *previousButton;


#import "ViewController.h"

@implementation ViewController
@synthesize previousButton,total;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.total = 0;
    NSMutableArray *theData = [NSMutableArray arrayWithObjects:@"1",@"3",@"5",@"7",@"8",@"4",nil];
    for (id obj in [self.view subviews]) {
        if ([obj isKindOfClass:[UIButton class]] && [obj tag] == 1) {
            [(UIButton *)obj setTitle:theData.lastObject forState:UIControlStateNormal] ;
            [theData removeLastObject];
        }
    }
}

-(IBAction)buttonPressed:(UIButton *)sender {
    self.total += sender.titleLabel.text.intValue;
    [sender setTitle:[NSString stringWithFormat:@"%d",self.total] forState:UIControlStateNormal];
    self.previousButton.hidden = YES;
    sender.enabled = NO;
    [sender setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
    self.previousButton = sender;

}

我不确定是否需要阵列,但如果我对您的需求有更多了解,我可以提供更具体的建议。在游戏开始时单击第一个按钮后,您希望发生什么?第二,如何获得按钮标题中的数字?@rdelmar我已经设置好了它,用户可以通过单击并按下enter按钮来选择他们想要的数字,当这种情况发生时,它会获取按钮的当前标题并将其存储为变量。至于数字,它们来自一个名为currentHand的数组。我的问题是,关于这些数字,你是如何选择放入手中的数字的?我不确定是否需要数组,数字可以存储为6个按钮的标题,但这部分取决于你如何选择这些数字。他们是随机挑选的吗?您是否有多组6个数字存储在某个位置,您可以从中提取一个来填充手?它们实际上是从预定义的数字数组中存储的