试图从appdelegate推送视图控制器。将其重定向到适当的视图控制器,但缺少ui
code
-(void)checkConditionToMoveToPaynoteDetailPage
{
if([_topViewController isKindOfClass:[TCSPayNoteHomeViewController class]])
{
[[NSNotificationCenter defaultCenter] postNotificationName:popCurrentPaynoteDetailPage object:self];
[self performSelector:@selector(moveToPaynoteDetailPage) withObject:nil afterDelay:2];
}
else{
BOOL ctrlIsPresent = NO;
for (id ctrlr in self.navigationCtrlArray ) //required controlled is in betwwen
{
if([ctrlr isKindOfClass:[TCSPayNoteHomeViewController class]])
{
ctrlIsPresent = YES;
}
}
if(ctrlIsPresent) //required controlled is in betwwen
{
dispatch_async(dispatch_get_main_queue(), ^{
[self.navController popToViewController:[self.navigationCtrlArray objectAtIndex:0] animated:YES]; // top is required controller
[self performSelector:@selector(moveToPaynoteDetailPage) withObject:nil afterDelay:2];
});
}
else{
[self moveToPaynoteDetailPage];
// rquired controller is not in a stack
}
}
}
-(void)moveToPaynoteDetailPage
{
UIViewController *viewController = [self getTopViewController];
TCSPayNoteHomeViewController *paynoteDetailCtrl= [[TCSPayNoteHomeViewController alloc] init];
TCSPayNote *payNoteData = [[TCSPayNote alloc] init];
payNoteData.payNoteEntryID = [_notifInfo valueForKey:@"id"];
paynoteDetailCtrl.payNoteData = payNoteData;
[viewController.navigationController pushViewController:paynoteDetailCtrl animated:NO];
}
**视图控制器**
-(UIViewController*)getTopViewController
{
UINavigationController *navController = (UINavigationController *)self.window.rootViewController;
UIViewController *viewController = navController.topViewController;
return viewController;
}
-(void)getNavigationCtrlArray
{
self.navController = (UINavigationController *)self.window.rootViewController;
self.navigationCtrlArray = [self.navController viewControllers];
}
im试图从appdelegate推送视图控制器。将其重定向到正确的页面,但是在按
时未加载ui我在某处做了类似的操作,但对getTopViewController
具有不同的功能。这是我的代码。
// Find and return top view controller
+ ( UIViewController * ) topViewController
{
return [fmUiUtil topViewControllerFrom:UIApplication.sharedApplication.keyWindow.rootViewController];
}
// Given a starting point, find the best top view controller
+ ( UIViewController * ) topViewControllerFrom:( UIViewController * ) vc
{
if ( vc.presentedViewController )
{
return [fmUiUtil topViewControllerFrom:vc.presentedViewController];
}
else if ( [vc isKindOfClass:UISplitViewController.class] )
{
UISplitViewController * svc = ( UISplitViewController * ) vc;
if ( svc.viewControllers.count )
{
return [fmUiUtil topViewControllerFrom:svc.viewControllers.lastObject];
}
else
{
return vc;
}
}
else if ( [vc isKindOfClass:UINavigationController.class] )
{
UINavigationController * svc = ( UINavigationController * ) vc;
if ( svc.viewControllers.count )
{
return [fmUiUtil topViewControllerFrom:svc.topViewController];
}
else
{
return vc;
}
}
else if ( [vc isKindOfClass:UITabBarController.class] )
{
UITabBarController * svc = ( UITabBarController * ) vc;
if ( svc.viewControllers.count )
{
return [fmUiUtil topViewControllerFrom:svc.selectedViewController];
}
else
{
return vc;
}
}
else
{
return vc;
}
}
此外,在代表中,我也使用[topVC presentViewController ...
而不是[topVC.navigationController pushVC
。