2013-01-24 41 views
1

我試圖用NSMutable數組更新UITextview文本,但String1沒有用String2,String3等更新。我在編碼方面做錯了什麼?NSMutable陣列沒有更新UITextView

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]; 
}} 
+3

變量名應該爲小寫.. – Rob

+1

什麼是循環和遍地設置標籤的意義呢?到不同的值? – Rob

+0

你的代碼對我沒有任何意義。循環中的代碼根本不會執行。 –

回答

1

您不能使用Array作爲變量名稱。這是一個保留字。你也正在將一個標準數組初始化爲一個N​​SMutableArray。如果你想從一個標準的數組一個可變副本只是做:

NSMutableArray *yourMutableArray = standardArray.mutableCopy; 

或只是intialize它作爲一個mutableArray:

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

看看上面您UPDATETEXT功能:你在開始你的循環你的數組的末尾,你的循環只能到數組的末尾。它甚至不會進入循環。

+0

當我試圖更新randamly然後它與下面的代碼工作,但更新序列明智比隨機與上述代碼不起作用。 int index = arc4random()%[myArray count]; myTextView.text = [myArray objectAtIndex:index]; – user1452248

+0

你爲什麼要這麼做?你正在選擇一個隨機數,而mod最有可能不會返回一個有效的索引。我剛剛編輯了我的答案,以包含上面的代碼的更多問題 –

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]; 
} 

會發生什麼(我假設有5個字符串數組爲例):當UPDATETEXT運行....的對循環得到立即執行....我變成2..3..4..5非常快,文本從「String1」更改爲「String2」...「String3」..「String4」......最後「String5」如此之快以至於你只看到從「String1」到「String5」
之後......每隔2秒..... updateText再次被執行....並且發生同樣的事情。所以你看到的是......文本「改變」......從「String5」...到「String5」......所以你什麼都看不到!
希望清楚。