我在嘗試讓我的Objective-C代碼在觸發後續代碼之前適當地等待來自UIAlertView的用戶輸入時遇到了很多麻煩。例如,我有以下代碼:如何在使用UIAlertView時等待用戶響應?
if (!self.currentUser) [self displayLoginUIAlertView];
Program *program = [[Program alloc] initWithUser:self.currentUser];
[program startProgram];
凡Program
是一個自定義對象和其中來自[self displayLoginUIAlertView]
用戶輸入設置屬性self.currentUser
。
我寧願不把第二行和第三行(Program *program
和[program startProgram]
到alertView:didDismissWithButtonIndex
因爲我想限制我的視圖控制器不同類型的警報意見的數量。另外,我寧願不創建我自己定製的全模態UIAlertView對象(就像在線上的一些解決方案似乎建議)
我在尋找的答案將有望超出UIAlertView對象的泛化,並將有助於回答更一般的問題,如何等待在進入下一行代碼之前,需要在Objective-C中完全執行。我還嘗試了以下操作:
if (!self.currentUser) [self displayLoginUIAlertView];
while (!self.currentUser) wait(1);
Program *program = [[Program alloc] initWithUser:self.currentUser];
[program startProgram];
但是,這(不出所料)會導致無限循環,其中警報視圖永遠不會出現,並且用戶輸入被鎖定。
我已經研究過使用塊,但他們的語法超級困惑。塊是否是解決方案?或者我問錯誤的問題?
你能解釋一下你的意思嗎?我試圖限制不同類型警報視圖在我的控制器中的數量?將代碼放入委託回調中看不到問題所在。 –