【仅供内部供应商使用,不提供对外解答和培训】
...
Code Block | ||
---|---|---|
| ||
- (void) setting { //定义一个注销按钮 IFFrameAppSettingItem *logoutItem = [[IFFrameAppSettingItem alloc] initWithTitle:@"注销" andAction:^(UITableViewCell *selectedCell) { //注销 [IFIntegrationUtils logOut]; //让页面消失,这里需要写一个获取当前最前端视图(当前就是设置界面)的方法,后面会有示例,也可以把设置页面在类里定义成变量能引用到。 [[self topViewControllerWithRootViewController:[UIApplication sharedApplication].delegate.window.rootViewController] dismissViewControllerAnimated:YES completion:nil]; }]; //把自定义注销按钮放大数组里,后面给创建设置页面使用 NSArray *logOutSection = [[NSArray alloc] initWithObjects:logoutItem, nil]; NSArray *customItems = [[NSArray alloc] initWithObjects:logOutSection, nil]; //定义设置页面 IIFFrameAppSettingViewController *settingViewController; = [[IFFrameAppSettingViewController alloc] initWithCustomItems:customItems]; //根据手机/Pad设置不同的弹出方式 BOOL isPhone = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone; UIViewController *topViewController = [self topViewControllerWithRootViewController:[UIApplication sharedApplication].delegate.window.rootViewController]; if(isPhone) { [topViewController.navigationController pushViewController:settingViewController animated:YES]; } else { UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:settingViewController]; navigationController.modalPresentationStyle = UIModalPresentationFormSheet; [topViewController presentViewController:navigationController animated:YES completion:nil]; } } //获取当前顶部视图 - (UIViewController*)topViewControllerWithRootViewController:(UIViewController*)rootViewController { if ([rootViewController isKindOfClass:[UITabBarController class]]) { UITabBarController* tabBarController = (UITabBarController*)rootViewController; return [self topViewControllerWithRootViewController:tabBarController.selectedViewController]; } else if ([rootViewController isKindOfClass:[UINavigationController class]]) { UINavigationController* nav = (UINavigationController*)rootViewController; return [self topViewControllerWithRootViewController:nav.topViewController]; } else if (rootViewController.presentedViewController) { UIViewController* presentedViewController = rootViewController.presentedViewController; if([presentedViewController isKindOfClass:[UIAlertController class]]) { return rootViewController; } return [self topViewControllerWithRootViewController:presentedViewController]; } else { return rootViewController; } } |
效果图如下: