2013-09-23 11 views
11

से UIViewController विधि को कॉल करना मुझे पता है कि इस प्रश्न के डुप्लीकेट हैं लेकिन मेरी स्थिति यहां अलग है।ऐप प्रतिनिधि

जब उपयोगकर्ता घर पर वापस जाता है (void)applicationDidEnterBackgroundAppDelegate कक्षा से आक्रमण किया जाता है। हालांकि, जब उपयोगकर्ता होम बटन दबाता है, तो मैं नहीं चाहता कि उपयोगकर्ता इस व्यू कंट्रोलर को दोबारा देखे, इसलिए मेरे पास (void)goToBeginning नामक एक विधि है जो किसी अन्य व्यू कंट्रोलर पर स्विच करती है। मैं इस विधि को ऐपडिलेगेट से कॉल करने में सक्षम होना चाहता हूं। मैं वास्तव में इसके लिए NotificationCenter का उपयोग नहीं करना चाहता हूं। इसके अलावा यहां उठाया गया समाधान: Calling view controller method from app delegate मेरे लिए काम नहीं करता है क्योंकि यह नई वस्तु शुरू करता है जबकि मैं पहले से ही किसी ऑब्जेक्ट को कॉल करने में सक्षम होना चाहता हूं। मैं उसे कैसे कर सकता हूँ? मैं आईओएस 7 और एक्सकोड 5 का उपयोग कर रहा हूं।

+0

ग्रेट प्रश्न +1, मैंने डुप्लिकेट के रूप में चिह्नित किया है, क्योंकि यह किसी अन्य वर्ग को कॉल करने वाली कक्षा की सभी समान अवधारणाओं है, आपके मामले में आप तत्काल कक्षा (नियंत्रक देखें) के संदर्भ प्राप्त करना चाहते हैं, ताकि आप यूआई के साथ बातचीत कर सकें तत्व, जैसे विचार ... मैं जिस प्रश्न को मूल मानता हूं वह 4 साल पहले है और इसमें कई विचार और वोट हैं। –

उत्तर

42
  1. अधिसूचना। लेकिन आप यह नहीं चाहते हैं।
  2. AppDelegate में आप अपने viewController का संदर्भ प्राप्त कर सकते हैं। फोन की तुलना में (void)applicationDidEnterBackground

उदाहरण के लिए में है कि (void)goToBeginning विधि: अपने ViewController

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

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

में और में अपनी AppDelegate:

@class MyViewController; 

@interface AppDelegate : UIResponder <UIApplicationDelegate> 

@property (weak, nonatomic) MyViewController *myViewController; 

@end 

और AppDelegate के कार्यान्वयन में:

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

धन्यवाद, यह ठीक काम करता है –

+0

@ ब्रायन मुझे नहीं, ओपी यह नहीं चाहता है। "मैं वास्तव में 'अधिसूचना केंद्र' का उपयोग नहीं करना चाहता हूं। आपको सावधानी से प्रश्न पढ़ना चाहिए।^_^ – sunkehappy

+0

आह, क्षमा करें। मेरी टिप्पणी हटा देंगे। – Bryan

संबंधित मुद्दे