2015-03-26 14 views
7

Önce bir MainViewController oluşturun. Ben (iPhone 6+ hariç) modalViewController, iPhone'larda çıkardığınızda Sonra MainViewController içinde, ben GörünümDidAppear görünüm görünmediğinde çağrılmaz

[self presentViewController:modalViewController animated:YES completion:nil]; 
modalViewController.modalPresentationStyle = UIModalPresentationFormSheet; 

yapın MainViewController ait viewDidAppear denir. iPad'lerde ve iPhone 6'da, MainViewController'ın viewDidAppear'ı aranmıyor.

ModalViewController görevden alındığında mantık bir işlev çağırmaktır. ModalViewController'ın ne zaman reddedildiğini nasıl bilebilirim.

+0

Başka bir 'modalPresentationStyle' kullanmayı deneyin. O zaman işe yarıyor mu? – itsji10dra

+0

Bu, UX tarafından gereklidir. Değiştiremem. – Gonghan

+0

Şunu arıyorsun: [super viewDidAppear: hareketli]; – itsji10dra

cevap

4

Kalıcı görünüm denetleyicisini kapattığınızda, MainViewController'daki işlevinizi çağırmak için bir temsilci kullanabilirsiniz.

MainViewController.h:

@protocol YourDelegate <NSObject> 
- (void)someFunction; 
@end 

@interface MainViewController : UIViewController <YourDelegate> 

@end 

MainViewController.m:

// Where you present the modal view 
ModalViewController *view = [[ModalViewController alloc] init]; 
view.delegate = self; 
[self presentViewController:view animated:YES completion:nil]; 

ModalViewController.h:

@interface ModalViewController : UIViewController 
@property (nonatomic, weak) id<YourDelegate> delegate; 
@end 

ModalViewController.m

// Wherever you dismiss.. 
[self dismissViewControllerAnimated:YES completion:^{ 
    [self.delegate someFunction]; 
} 
Örneğin
+0

Proje storyboard + segues kullanıyorsa ne olur? Demek istediğim kodun değil, hikaye tahtasında tanımlandığı durum. –

3

Apple tarafından sağlanan görünüm denetleyicilerinin yaptığı gibi, bu, denetleyici isteklerinin kapatılması istendiğinde çağrılan görüntüleme denetleyicisinde bir delege sahip olmaktır. Daha sonra, sunucu kontrolörün görevden alınmasından sorumlu olacak ve böylece herhangi bir ilişkili temizlemenin ne zaman yapılacağını da bilecektir (animasyondan önce ve sonra).

İlgili konular