簡體   English   中英

Xcode Objective-C Segue“正在進行演示”

[英]Xcode Objective-C Segue “Presentation in Progress”

我正在嘗試開發一個允許用戶使用AFNetworking登錄的應用程序。 我正確設置了數據庫,除非用戶首次登錄,否則一切似乎都正常。

我所擁有的是非常簡單的:

[[API sharedInstance] commandWithParams:params
                               onCompletion:^(NSDictionary *json) {
                                   //result returned

                                   NSDictionary* res = [[json objectForKey:@"result"] objectAtIndex:0];

                                   if ([json objectForKey:@"error"]==nil && [[res objectForKey:@"UserID"] intValue]>0) {
                                       [[API sharedInstance] setUser: res];
                                       [self performSegueWithIdentifier:@"Login" sender:self];
                                   } else {
                                       //error
                                       [UIAlertView title:@"Error" withMessage:[json objectForKey:@"error"]];
                                   }

                               }];

基本上,上面的代碼返回用戶登錄詳細信息的結果,僅在登錄詳細信息匹配時才成功。 如您所見,我清楚地將用戶設置在整個應用程序中使用的sharedInstance中。 設置用戶后,我嘗試執行segue,因為這是登錄按鈕應該執行的操作。

segue確實發生了,程序正在運行,但有兩個問題我無法解決,而且我花了好幾個小時試圖修復它。 首先,我在Xcode的輸出窗口中收到消息:

警告:在演示文稿正在進行時嘗試在LoginVC上顯示UITabBarController!

其次,為了測試用戶設置是否正確,在“配置文件”屏幕上(第一個屏幕被屏蔽)有一個標簽,其文本設置為:

NSString stringWithFormat:@"Welcome %@",[[[API sharedInstance] user] objectForKey:@"username"]];

並且如果用戶名實際出現或者說(null)如圖所示:

在此輸入圖像描述

您還可以看到我在那里制作的按鈕,以便在輸出窗口中打印用戶的值。 即使消息是“歡迎(null)”並按下按鈕,所有值都正確,所以我不確定為什么字符串有時會為null。

這是關於我遇到的問題的故事板設置:

在此輸入圖像描述

如果有人能幫我這個,我會真的很感激。

正確診斷時,問題肯定是對segue的一些奇怪和/或重復的調用。 看看你的項目,問題是你的“登錄”按鈕同時具有IBAction方法以及從該登錄屏幕到下一個控制器(標簽欄控制器)的segue:

IBAction和segue

這是一個問題,因為當你按下按鈕時會觸發segue,但是你的- (IBAction)login:(id)sender代碼會再次觸發。

因為您有IBAction ,所以segue 應該從按鈕到下一個控制器,而應該來自控制器本身。 因此,將現有的Login segue從按鈕刪除到下一個屏幕,並從控制器本身重新創建它:

從控制器到下一個場景創建segue

為新的segue指定“登錄”標識符,現在您的“登錄”按鈕不會自動執行segue本身,但會讓IBAction執行其工作並手動執行performSegueWithIdentifier

發送/觸發事件: Did End On Exit

將它連接到調用performSegueWithIdentifier的方法。

這樣它就不會觸發兩次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM