2017-01-27 3 views
0
- (void)applicationDidBecomeActive:(UIApplication *)application { 
    UIViewController* root = _window.rootViewController; 
    UINavigationController* navController = (UINavigationController*)root; 


    UIViewController mycontroller = (UIViewController)[[navController viewControllers] objectAtIndex:0]; 
    [mycontroller serverSync]; 
} 

Ich benutze diesen Code, aber erhalten Fehler:Wie Funktion in ViewController.m von AppDelegate aufrufen?

ld: 110 doppelte Symbole für Architektur x86_64 Klirren: Fehler: Linker Befehl fehlgeschlagen mit Exit-Code 1 (Verwendung -v Aufruf zu sehen)

Wie repariert man?

+1

Benutzer NSNotificationCenter für Anruf, dass Verfahren in appdelegates.m Datei –

+0

Sie Benachrichtigung von AppDelegate und addObserver in Ihrem Viewcontroller veröffentlichen können . Es ist ein besserer Weg. – Sunny

Antwort

2

110 duplicate symbols bedeutet, dass Sie viel mehr Probleme haben, als zu versuchen, die Funktion serverSync Ihres View-Controllers von Ihrem App-Delegaten aufzurufen.

Anstatt serverSync in Ihrem App-Delegaten zu tun, setzen Sie es in Ihre Ansicht Controller viewDidLoad Methode.

Noch besser, erstellen Sie ein Singleton-Objekt, das die serverSync tut und Ihr View-Controller kann zugreifen und Ihre Serverdaten von dort verwenden.

0

Sie können NSNotificationCenter dafür verwenden. Hier ist das Beispiel.

In Ihrem AppDelgate.m

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    [[NSNotificationCenter defaultCenter] 
    postNotificationName:@"iOStpoint.wordpress.com" 
    object:self]; 
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
} 

In Ihrem ViewController.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(receiveTestNotification:) 
               name:@"iOStpoint.wordpress.com" 
               object:nil]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void) receiveTestNotification:(NSNotification *) notification 
{ 

    if ([[notification name] isEqualToString:@"iOStpoint.wordpress.com"]) 
     NSLog (@"Successfully received the test notification!"); 
} 
Verwandte Themen