使用按钮更改NSArray

时间:2013-07-05 14:09:16

标签: objective-c nsarray

我已经相当广泛地搜索了这个没有运气,我很确定它是微不足道的。

基本上,一个水晶球型应用程序。我有:

self.predictionArray = [[NSArray alloc] initWithObjects:
                        @"Example 1",    
                        @"example 10000", nil];

还有一个“magic8”按钮,当我点按时,选择:

- (IBAction)buttonPressed:(UIButton *)sender {
NSUInteger index = arc4random_uniform(self.predictionArray.count);
self.predictionLabel.text = [self.predictionArray objectAtIndex:index];}

这一切都很完美,网上有很多关于它的东西。

我想做什么:

有3个这样的阵列和3个按钮。按钮只需选择相应的NSArray,然后按“magic8”按钮。

似乎它应该相当简单,我理解当前代码中发生了什么,但我不能为我的生活弄清楚如何去做。我肯定没经验。

非常感谢能提供任何建议的任何人。我真的不想浪费任何人的时间,我没有运气搜索,我想也许需要知识渊博〜1分钟才能解释如何去做。

2 个答案:

答案 0 :(得分:1)

一个简单(但不是最好)的解决方案是在界面构建器中为3个按钮提供标签0,1,2。然后将predictionArray设置为:

@[   @[ @"button 0 123", @"button 0 456" ],
     @[ @"button 1 123", @"button 1 456" ],
     @[ @"button 2 123", @"button 2 456" ]]

然后在buttonPressed方法中,您可以根据按钮标记选择子阵列:

- (IBAction)buttonPressed:(UIButton *)sender {
    if (sender.tag >= 0 && sender.tag < self.predictionArray.count) {
        NSArray *predictionArray = self.predictionArray[sender.tag];
        NSUInteger index = arc4random_uniform(predictionArray.count);
        self.predictionLabel.text = [predictionArray objectAtIndex:index];
    }
}

答案 1 :(得分:0)

如果你真的想做3按钮的话:

- (IBAction) buttonAction:(UIButton *) b
{
switch(b.tag)
{
case 1:
{
self.predictionArray = nil;
self.predictionArray = [[NSArray alloc] initWithObjects:
                    @"Example 1",    
                    @"example 10000", nil];
}
break;

 case 2:
{
self.predictionArray = nil;
self.predictionArray = [[NSArray alloc] initWithObjects:
                    @"Example 2",    
                    @"example 20000", nil];
 }

break;
case 3:
{
self.predictionArray = nil;
self.predictionArray = [[NSArray alloc] initWithObjects:
                    @"Example 3",    
                    @"example 30000", nil];
 }

break; 
default:
break;
 }

- (IBAction)buttonPressed:(UIButton *)sender {
NSUInteger index = arc4random_uniform(self.predictionArray.count);
self.predictionLabel.text = [self.predictionArray objectAtIndex:index];
}