Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用按钮更改NSArray_Objective C_Nsarray - Fatal编程技术网

Objective c 使用按钮更改NSArray

Objective c 使用按钮更改NSArray,objective-c,nsarray,Objective C,Nsarray,我已经搜索了相当广泛的这个没有运气,我敢肯定它微不足道 本质上,一个水晶球类型的应用程序。我有: self.predictionArray = [[NSArray alloc] initWithObjects: @"Example 1", @"example 10000", nil]; 还有一个“magic8”按钮,当我点击它时,它会选择: - (IBAction)buttonPressed

我已经搜索了相当广泛的这个没有运气,我敢肯定它微不足道

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

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分钟来解释怎么做。

如果你真的想做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];
}
一个简单(但不是最好的)解决方案是在interface builder中为您的3个按钮提供标记0、1、2。然后将您的
predictionArray
设置为:

@[   @[ @"button 0 123", @"button 0 456" ],
     @[ @"button 1 123", @"button 1 456" ],
     @[ @"button 2 123", @"button 2 456" ]]
然后在
按钮按下的方法中,根据按钮标签选择子阵列:

- (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];
    }
}
-(iAction)按钮按下:(UIButton*)发送方{
if(sender.tag>=0&&sender.tag
Ahh,然后当我单击“说”按钮2时,它将加载其版本的“predictionArray”?是的,就是这样,您只需切换内容即可。您还可以使用1个方法,所有3个按钮都可以调用它,您可以设置按钮1、2、3的标记,您只需切换标记并更改方法中数组的内容。谢谢-这非常有效。我认为这不是一个非常干净/好的方法,但它对我来说非常有效。我认为我的答案更简单、更干净。你不必一次又一次地重新创建数组。这对你有好处,也许他不想创建数组数组,即使这确实容易得多。简单但足够了。为Willl澄清:所有三个按钮的操作都将连接到一个
按钮按下:
处理程序。我建议您在尝试编写应用程序之前,花一点时间学习编程的基础知识(通过一本真书或一门课堂课程)。