2012-11-23 44 views
0

我想從imagePickerController:didFinishPickingMediaWithInfo:方法以編程方式調用segue,但它不起作用。它不會崩潰,但不起作用。它什麼都不做。 prepareForSegue方法調用正確。從didFinishPickingMediaWithInfo調用performSegueWithIdentifier

- (void) imagePickerController:(UIImagePickerController *)picker 
     didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    rutaFoto = [info valueForKey:UIImagePickerControllerMediaURL]; 
    [self dismissModalViewControllerAnimated:YES]; 
    [self performSegueWithIdentifier:@"aGaleria" sender:self]; 
} 

segue鏈接2 UIViewControllers。 如果我從其他地方撥打performSegueWithIdentifier(例如從推式UIButton方法),它的工作原理。 任何想法?

+0

什麼樣賽格瑞的是 「aGaleria」?莫代爾?推 ?嘗試在* viewDidDisappear *中調用segue。 – rdurand

+0

這是模態。我試圖從viewDidDisappear調用它,但它不工作... – Xithias

回答

3

嘗試使用dismissViewControllerAnimated:完成:並把調用performSegueWithIdentifier:發件人:在完成塊(dismissModalViewControllerAnimated:無論如何都是折舊的,所以你不應該使用它)。

 [self dismissViewControllerAnimated:YES completion:^{ 
      [self performSegueWithIdentifier:@"aGaleria" sender:self]; 
     }]; 
+0

如果我寫這個:'[self dismissViewControllerAnimated:YES completion:[self performSegueWithIdentifier:@「aGaleria」sender:self]];'I得到這個錯誤:_發送'void'到不兼容類型的參數'void(^)(void)'_ – Xithias

+0

@Xithias看到我編輯的答案 – rdelmar

+0

糟糕,抱歉我的語法錯誤。有效!非常感謝!我的主viewController顯示了一會兒,然後去了Galeria viewController。有沒有辦法避免顯示mainViewController? – Xithias

-2

我想知道這是否與主線程已經處理了當前ViewController中的變化,didFinishPickingMediaWithInfo與原始ViewController之間的過渡。

我要做兩件事情,第一是當你調用aGaleria SEGUE把延遲:

sleep(2.0); 
[self performSegueWithIdentifier:@"aGaleria" sender:self]; 

第二和更好的選擇,是從視圖後,執行SEGUE已完成PickingMediaWithInfo。你可以建立一個新的NSNotificationCenter觸發器在原有的ViewController,然後用在didFinishPicking方法延遲觸發它:

+0

我試了兩次,他們沒有工作。 didFinishPickingMediaWithInfo方法在圖庫中選擇圖片後收集信息,但只有在didFinishPickingMediaWithInfo方法完成時纔會解散圖庫控制器,因此當我調用segue時,模擬器仍顯示圖庫,而不是我的主視圖控制器。所以這一定是問題,但我不知道如何解決它... – Xithias

相關問題