我要的是等待一定的延遲我的方法開始後的前調用我的忙指示:如何在延遲後調用方法?
- 如果該方法完成該延遲之前,我忙指示燈會顯示不出來。
- 如果該方法比我的延遲需要更多時間才能完成。我的繁忙指標會顯示直到方法結束,並在完成時關閉。
感謝您的幫助!
我要的是等待一定的延遲我的方法開始後的前調用我的忙指示:如何在延遲後調用方法?
感謝您的幫助!
您可以嘗試:
具有一個名爲completed的bool屬性。
perform selector after delay //(some selector showBusy, some delay)
completed = NO;
dispatch_queue_t myqueue = dispatch_queue_create("queue", NULL);
dispatch_async(myqueue, ^{
//your long time operation (must not do any UI changes here)
dispatch_async(dispatch_get_main_queue(), ^{
//UI here
completed = YES;
hideBusy;
});
});
-(void)showBusy{
if(!completed).....
}
謝謝,我認爲它會更復雜,但它工作正常。 – neobagram
這不是,感謝塊的魔力:) –
對於跳躍開始:
一個可能解決方案是使用一個單次定時器,在操作開始時將被啓動,和火災所需的持續時間之後。計時器的動作是啓動忙指標。
在操作的完成處理程序中,計時器將失效,並且忙指示符將被禁用(隱藏)(如果有的話)。
您可以嘗試
[self performSelector:@selector(showIndicator) withObject:nil afterDelay:1.0];
使用一些布爾變量像jobCompleted來表示你的工作是否完成與否。然後
- (void)showIndicator
{
if(jobCompleted)return;
....
}
如果你必須表明你的活動指標的方法(我們將其命名爲-(void)showIndicator
),你可以做
[self performSelector:@selector(showIndicator) withObject:nil afterDelay:delay];
與
[NSObject cancelPreviousPerformRequestsWithTarget:self];
你有任何代碼來取消它顯示你卡在哪裏?一般情況下[你嘗試過](http://mattgemmell.com/what-have-you-tried/)來解決它? – beryllium
你們教給新手一切,而不是他們正在尋找的東西。 – EmptyStack