簡體   English   中英

iPhone [self performeguewithidentifier…]未顯示新的視圖控制器

[英]iPhone [self performseguewithidentifier… ] is not showing the new view controller

我到處都是stackoverflow,到處都是Google,我似乎無法弄清楚這一點。 這是我的情況:

我在應用程序的“主屏幕”上,用戶首先決定要做什么。 該應用程序基於通過“導入” XML文件創建的CoreData數據庫。 用戶可以選擇在我的應用程序中打開附加到電子郵件的XML文件,這將自動觸發我的主屏幕,以顯示並運行文件的導入。

我可以做到這一點,沒有任何問題。 在我的情節提要中,我從主屏幕到視圖控制器都有一個名為ParseSegue的segue,它將處理解析並為用戶提供一些狀態信息。

通過電子郵件應用程序調用主屏幕時,主屏幕會自動調用

[self performSegueWithIdentifier:@"ParseSegue" sender:self];

然后,我在prepareForSegue中檢查此segue名稱,它是有效名稱。 在這里,我將文件URL分配給解析器控制器,以便它可以解析正確的文件。

問題是segue從未真正發生過。 prepareForSegue方法被調用,名稱“ ParseSegue”可以被檢查並有效,但是segue本身根本不會發生。 如果我在主屏幕上添加一個按鈕,並告訴它在情節提要板中執行segue,則效果很好。 但是以編程方式調用它似乎無濟於事。

原來,我完全在錯誤的地方看。 我的問題是,在我的appDelegate(應用程序對傳入的URL做出反應)中,我無意中創建了故事板和主視圖控制器的新實例。 這與已經處於活動狀態並且可能不在屏幕上的屏幕不同。

我創建的控制器從未真正顯示過。 我只注意到這一點,因為日志:

NSLog(@"Source: %@", [segue.sourceViewController description]);

會為我的測試(按鈕按下)和導入測試顯示不同的內存地址。 這使我相信,實際上,我正在使用故事板和應用程序的主視圖控制器的兩個不同實例。 感謝Paul提出的記錄目標和源控制器的建議。

暫無
暫無

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

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