2015-04-06 73 views
0

我使用prepareForSegue將2值傳遞給PFQueryViewContoller。這兩個屬性都在頭文件(public)中定義。你可以在下面的代碼中看到,我將它們傳遞給了兩次(一次沒有測試,看看縣是否爲空,並且一次檢查它是否爲空)。我這樣做只是爲了強調問題與縣是否在其他地方設置無關我的代碼之前prepareforsegue被調用。有沒有人有任何想法,爲什麼這可能不工作?這可能是一個非常愚蠢的錯誤。我已經檢查了segue的名稱(甚至複製並將其粘貼到prepareforsegue方法,以防有一個錯字我錯過了)。而且,目的地視圖 - 控制並沒有嵌入任何其他視圖控制器,這是在重要的情況下,自定義SEGUE。傳遞數據使用prepareForSegue不工作

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

if ([[segue identifier] isEqualToString:@"toPizzaSpots"]) 
{ 
    // Get reference to the destination view controller 
    PizzaSpotTVC *vc = [segue destinationViewController]; 


    // Pass any objects to the view controller here, like... 
    vc.county = self.county; 
    vc.no = 8; 
    if (self.county){ 

    vc.county = self.county; 
    vc.no = 8; 
    } 

    } 
    } 
+0

順便說一句,我在if([[segue identifier] isEqualToString:@「toPizzaSpots」])中插入NSLogs,以確保代碼在被調用時被調用並被調用。我的PFQueryViewContoller有一個名爲initWithCoder的方法,這是否與數據沒有進入我的destinationViewController的原因有關? – stonybrooklyn

+0

「不工作」是什麼意思? segue是否成功執行,但數據不通過? – rdelmar

+0

數據傳輸不能正常工作的方式是什麼?您在「PizzaSpotTVC」中確定哪些數據尚未傳輸? – luk2302

回答

0

在通過prepareForSegue:sender:傳遞的屬性值看,不能內部完成一個init方法,在調用prepareForSegue時,目標視圖控制器的init方法已被調用。這些屬性的值將在調用viewDidLoad時設置,因此在那裏訪問它們是安全的。

0

當創建PFQueryViewContoller時,InitWithCoder是ViewController生命週期中第一個調用的方法。爲了訪問由prepareForSegue方法設置的屬性,您需要在viewDidLoad方法中訪問它們。感謝rdelmar回答這個問題。如果您更改Parse查詢所依賴的viewDidLoad方法中的屬性(例如,從Parse數據庫中的適當表中提取),那麼viewDidLoad會執行足夠的時間將此parseClassName發送給解析以正確執行查詢。當我試圖訪問initWithCoder方法中的屬性時,這是我最擔心的問題,並且它很早就無法工作 - 我認爲它需要在那裏才能使Parse查詢正常工作(但它不會影響viewDidLoad是足夠早的)