2012-11-17 30 views
1

我想知道爲此採取的最佳方法。從更新文本字段異步返回 - iphone

示例應用程序是: - 我有一個文本字段和按鈕。點擊按鈕,啓動一個任務來更新文本字段。但是文本字段需要在計時器(或後臺)上更新,比如說每1秒鐘一次,但我只需要計時器運行5秒鐘,例如填充隨機文本。

這應該給人的印象是文本框每秒顯示隨機字,然後在5秒完成後,計時器可以停止並且最後一個值保留在文本框中。

但我也想檢測停止事件,然後拿起文本字段中的值並執行另一個操作。

最後一個問題: -

我應該使用定時器事件或操作和隊列?不確定哪種方法最好。

回答

0

是,使用這樣一個計時器,repeats:YES是你所需要的:

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

- (void) ChangeText 
{ 
    _textfield.text = [nsstring stringwithformat:@"%@%@", _textfield.text, _yourstring]; 
} 
+0

非常感謝,出於某種原因,我過度思考和複雜的任務。 – user1831508

0

是,以上的答案是正確的,只是需要根據您的問題,一些小的變化...

count = 0; 

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

- (void) ChangeText 
    { 
    if (count < 5) 
    { 
     _textfield.text = [nsstring stringwithformat:@"%@%@", _textfield.text, _yourstring]; 
    } 
    else 
    { 
     //Start your next event here; 
    } 
0

NSTimer只能在主線程上工作,那麼如果它在後臺啓動,則不需要預料它會觸發。 另外我認爲這基本上是好的建築問題 - 你不想嘗試處理事件來更新你的文本?例如,處理某個任務完成或顯示值發生更改時的事件,然後使用委託/阻止/ NSNotification接收事件並更新UI。