2016-05-31 3 views
0

Ich möchte bestimmte Ansicht Controller öffnen, wenn Benutzer App von URL öffnet. Aber ich bin mit dem Problem konfrontiert, wenn Benutzer auf Home-Taste tippen und App über URL öffnen, öffnet App in seinem letzten Zustand, weil View Life Cycle-Methoden nicht aufgerufen werden. Daher kann ich die Ansicht nicht zum Aufgabendetailbildschirm navigieren. Ich möchte, wenn Benutzer App durch URL öffnen, wenn es im Hintergrund ist, dann sollte es den spezifischen View-Controller öffnen. PS: Ich kann die App nicht beenden. folgenden Code verwende ich (Code wird in AppDelegate.m geschrieben):iOS: App öffnet Ansicht Life Cycle-Methoden werden nicht aufgerufen, wenn App im Hintergrund war

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 

    if([UserName length]!=0 && [Password length]!=0) 
    { 
     NSLog(@"url recieved: %@", url); 
     NSLog(@"query string: %@", [url query]); 
     NSLog(@"host: %@", [url host]); 
     NSLog(@"url path: %@", [url path]); 
     // NSDictionary *dict = [self parseQueryString:[url query]]; 
     // NSLog(@"query dict: %@", dict); 

     NSArray* query = [[url query] componentsSeparatedByString: @"&"]; 
     NSString *taskId = [query objectAtIndex: 0]; 
     NSString *taskType = [query objectAtIndex: 1]; 
     NSArray* taskIdArray= [taskId componentsSeparatedByString: @"="]; 
     NSArray* taskTypeArray = [taskType componentsSeparatedByString: @"="]; 
     taskId = [taskIdArray objectAtIndex: 1]; 
     taskType = [taskTypeArray objectAtIndex: 1]; 
     NSLog(@"%@,%@",taskId,taskType); 

     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; 
     ActivityDetailController *destViewController = (ActivityDetailController*)[storyboard instantiateViewControllerWithIdentifier:@"ActivityDetailView"]; 
     [self.navigationController pushViewController:destViewController animated:YES]; 
    } 
    return YES; 
} 
+0

Sie müssen Ihren Ansichtszustand anpassen, was Sie tun möchten. Was ist das genaue Problem, das Sie haben? Fügen Sie Methoden an den entsprechenden Stellen hinzu, die Sie mit 'handleOpenURL' aufrufen können. – Avi

+0

Ich möchte einen View-Controller öffnen, wenn der Benutzer von URL kommt, aber wenn ich diesen View-Controller mit dem obigen Code öffne; nichts passiert. –

+0

Die Ansicht, die sich erneut öffnet, keine Ansichts-Lebenszyklusmethode dieser Klasse aufgerufen. –

Antwort

0

Wenn Sie App bei ActivityDetailController jedes Mal geöffnet werden soll kommen in den Vordergrund, dann können Sie dies tun,

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; 
    ActivityDetailController *destViewController = (ActivityDetailController*)[storyboard instantiateViewControllerWithIdentifier:@"ActivityDetailView"]; 
    [self.navigationController pushViewController:destViewController animated:YES]; 
} 

in applicationWillEnterForeground oder applicationDidBecomeActive

+0

Nein, ich möchte nur öffnen, wenn der Benutzer von der URL kommt .. Ich benutze oben, aber es funktioniert nicht für mich. –

+0

dann setzen Sie Bedingung, um zu überprüfen, dass Benutzer von der URL kommt, dann tun Sie das sonst nichts – Lion

+0

Ich mache das .. aber wenn App im Hintergrund ist, wird App von URL geöffnet .. dieser Code funktioniert nicht, App nur seine vorherige wiederherstellen Zustand. –

Verwandte Themen