1

UITextview テキストを NSMutable 配列で更新しようとしていますが、String1 が String2、String3 などで更新されていません。コーディングで何か間違ったことをしていますか?

Array = [[NSMutableArray alloc]initWithObjects:@"String1",@"String2",@"String3",@"String4", @"String5",..... nil];           

[NSTimer scheduledTimerWithTimeInterval:2.0
                                 target:self
                               selector:@selector(updateText)
                               userInfo:nil
                                repeats:YES];

self.textView.text = @"String1";

- (void)updateText {
int index = [Array count];

for(int i = index; i < Array.count; i++){

self.textView.text = [Array objectAtIndex:i];
}}
4

2 に答える 2

1

Array変数名として使用することはできません。それは予約語です。また、標準配列をNSMutableArrayに初期化しています。標準配列からの変更可能なコピーが必要な場合は、次のようにします。

NSMutableArray *yourMutableArray = standardArray.mutableCopy;

または、mutableArrayとして初期化します。

NSMutableArray *yourMutableArray = [[NSMutableArray alloc]initWithObjects:@"String1",@"String2",@"String3",@"String4", @"String5",..... nil];   

上記のupdateText関数を見てください。配列の最後でループを開始しており、ループは配列の最後にのみ移動します。ループに入ることさえありません。

于 2013-01-24T23:11:57.123 に答える
1

次のコードは正常に動作します (updateText をこれに置き換えて確認してください)。

- (void)updateText {
   static int counter=0;
   int index = [Array count];
   counter=++counter%index;//increase the counter...but make sure that if it gets greater than the number of strings in array....it gets back to 0
   self.textView.text = [Array objectAtIndex:counter];    
}

あなたのコードにはいくつかの間違いがあります:
1)最初の行のドットは去らなければなりません(私はあなたが知っていると思います..ただ言っているだけです)
2)updateTextであなたは言います(私はあなたのコードを実行しようとするとき!)

int index = [Array count];//5 for example
for(int i = 5; i < 5; i++){
   self.textView.text = [Array objectAtIndex:i];
}

だからライン

self.textView.text = [Array objectAtIndex:i];

実行されることはありません。

3)最後に、for ループを次のように変更しても:

int index = [Array count];//5 for example
for(int i = 0; i < index; i++){
   self.textView.text = [Array objectAtIndex:i];
}

何が起こるか (たとえば、Array に 5 つの文字列があるとします): updateText が実行されると、for ループが即座に実行されます....i は 2..3..4..5 になり、非常に高速です。テキストは "String1" から "String2"..."String3".."String4"...そして最後に "String5" に非常に速く変化するため、"String1" から "String5" に変化することしかわかりません
。 2秒ごとに.....updateTextが再度実行されます....そして同じことが起こります。つまり、テキストが「変化」し、「String5」から「String5」に...ということで、何も起こっていないことがわかります。
それが明確であることを願っています。

于 2013-01-25T03:38:30.283 に答える