2013-09-23 14 views
11

Bu sorunun iki kopyası olduğunu biliyorum, ancak durumum burada farklı.Uygulama temsilcisinden UIViewController yönteminin çağrılması

Kullanıcı eve geri döndüğünde (void)applicationDidEnterBackground, AppDelegate sınıfından çağrılır. Ancak, kullanıcı ana ekran düğmesine bastığında, kullanıcının bu görüntü denetleyicisini tekrar görmesini istemiyorum, bu yüzden başka bir denetleyiciye geçiş yapan (void)goToBeginning adlı bir yönteme sahibim. AppDelegate'den bu yöntemi çağırmak istiyorum. Bunun için NotificationCenter'u kullanmak istemiyorum. Ayrıca burada toplanan çözüm: Calling view controller method from app delegate yeni bir nesneyi başlattığı için benim için çalışmaz, oysa halihazırda görünümde olan bir nesneyi aramak istiyorum. Bunu nasıl yapabilirim? IOS 7 ve XCode 5 kullanıyorum.

+0

Büyük soru +1, yinelenen olarak işaretliyim, çünkü bu, benzer bir sınıfın başka bir sınıfı çağırmasıyla ilgili kavramlardır, sizin durumunuzda, örneklenmiş sınıfın (görünüm denetleyicisi) referansını almak istediğinizde, kullanıcı arabirimi ile etkileşimde bulunabilirsiniz. Görüşler gibi unsurlar ... Asıl olacağımı düşündüğüm soru 4 yıl önceydi ve birçok görüş ve oy var. –

cevap

42
  1. Bildirim. Ama bunu istemiyorsun.
  2. Referansı,numaralı AppDelegate numaralı telefondan alabilirsiniz. Örneğin (void)applicationDidEnterBackground

o (void)goToBeginning yöntemini çağırın Daha: En ViewController

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    appDelegate.myViewController = self; 
} 

In And içinde senin AppDelegate:

:
@class MyViewController; 

@interface AppDelegate : UIResponder <UIApplicationDelegate> 

@property (weak, nonatomic) MyViewController *myViewController; 

@end 

Ve AppDelegate 'ın uygulanmasında

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [self.myViewController goToBeginning]; 
} 
+0

Teşekkürler, iyi çalışıyor –

+0

@Bryan Bana değil, OP bunu istemiyor. "Ben gerçekten 'NotificationCenter' kullanmak istemiyorum". Soruyu dikkatlice okumalısın.^_^ – sunkehappy

+0

Ah, pardon. Yorumumu sileceğim. – Bryan