2016-12-06 2 views
0

からランダムにアイテムを削除します。この配列は、ラベル(myLabel)と2つのボタンがある次のView Controllerに渡されます。ラベルには、myArrayのランダムな文字列が印刷されます。 ButtonAは配列とは異なるランダムな文字列を表示し、ButtonBはラベルに印刷されている現在の文字列を削除し、配列からそのラベルにランダムな文字列を表示します。は、私は、ユーザーがテキストフィールドを経由してNSMutableArrayの(MyArrayという)に文字列を入力してプログラムを持っているNSMutableArrayの

これは私の現在のソリューションです:表示されたランダムな文字列のインデックスを取得し、配列からそれを削除する方法は

- (void)viewDidLoad { 

self.myLabel.text = [self.myArray objectAtIndex:arc4random() % [myArray count]]; 


-(IBAction)ButtonA:(id)sender { 

self.myLabel.text = [self.myArray objectAtIndex:arc4random() % [myArray count]]; 

} 

-(IBAction)ButtonB:(id)sender { 

NSInteger index = [myArray indexOfObject: //what goes here?]; 
[self.myArray removeObjectAtIndex:index]; 
self.myLabel.text = [self.myArray objectAtIndex:arc4random() % [myArray count]]; 

} 

ありますか?配列のすべての項目が削除されるまでこれをやり続けます。 // what goes here?は単にself.myLabel.textあるべき

答えて

1

ありがとうございます。

最後のランダムなインデックスoff保存し、インスタンス変数を追加した方がよいかもしれませんけど。次に、すべての配列インデックス参照はそのインスタンス変数で作成する必要があります。

また、乱数を計算し、ラベルを3回繰り返し設定するコードの同じ行を持っています。そのための新しいメソッドを作成し、それを現在持っている3つの場所からその関数を呼び出します。

最初の方法は、あなたのランダムな方法から得た文字列を格納することです。

0

は、あなたがこれを行うことができる2つの方法があります。このクラスのグローバル変数をクラス内で宣言することができます。そして、あなたは常に別の方法で同様のコードのブロックを配置することをお勧めします。

あなたの実装に続いて
NSString *generatedString; 

- (NSString *)generateRandomString 
{ 
    generatedString = [self.myArray objectAtIndex:arc4random() % [myArray count]]; 

    return generatedString; 
} 

:あなたの実装に続いて

NSInteger generatedStringIndex; 

- (NSString *)generateRandomString 
{ 
    generatedStringIndex = arc4random() % [myArray count]; 
    NSString generatedString = [self.myArray objectAtIndex:generatedStringIndex]; 

    return generatedString; 
} 

- (void)viewDidLoad 
{ 
    self.myLabel.text = [self generateRandomString]; 
} 

- (IBAction)buttonA:(id)sender 
{ 
    self.myLabel.text = [self generateRandomString]; 
} 

- (IBAction)buttonA:(id)sender 
{ 
    [self.myArray removeObject:generatedString]; 

    self.myLabel.text = [self generateRandomString]; 
} 

もう一つの方法は、生成された文字列のインデックスを格納することです

- (void)viewDidLoad 
{ 
    self.myLabel.text = [self generateRandomString]; 
} 

- (IBAction)buttonA:(id)sender 
{ 
    self.myLabel.text = [self generateRandomString]; 
} 

- (IBAction)buttonA:(id)sender 
{ 
    [self.myArray removeObject:generatedStringIndex]; 

    self.myLabel.text = [self generateRandomString]; 
} 
関連する問題