【仅供内部供应商使用,不提供对外解答和培训】
...
| 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;
}
} |
效果图如下: