demo中包含两个功能,1.用户登陆;2.查看用户订单;
未登录时点击OrderList需要先登陆,成功登录后无需额外操作可直接进入订单列表;已登录用户点击OrderList可以直接进入订单列表;
流程图如下
![](https://img.haomeiwen.com/i6819045/d3179da773992482.png)
外部使用代码
[JKVisterChecker addToDoThingsAfterLogin:^{
//这里添加登录后需要做的事情
JKListViewController *vc = [[JKListViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}];
//addToDoThingsAfterLogin内部的实现
+ (void)addToDoThingsAfterLogin:(void (^)(void))afterLogin{
//1.获取用户信息,根据自己的需求来
JKUser *user = [[JKUserManager sharedUserManager] currentUser];
if (!user) {
//2-1-1 需要登陆的情况
JKLoginViewController *vc = [[JKLoginViewController alloc] init];
vc.modalPresentationStyle = UIModalPresentationFullScreen;
vc.loginCallback = ^(BOOL loginSuccess) {
if (loginSuccess) {
//2-1-2 成功登录后调用afterLogin(),外部继续登录后需要做的事情,例如进入OrderList
if (afterLogin) {
afterLogin();
}
}
};
UIWindow *window = [[UIApplication sharedApplication].windows firstObject];
[window.rootViewController presentViewController:vc animated:YES completion:NULL];
}else{
//2-2-1 用户已经登陆,外部直接执行后续任务
if (afterLogin) {
afterLogin();
}
}
}
整个流程个人认为设计的是比较巧妙的,哈哈,自恋一下,demo在这里https://gitee.com/Jack_1993/vistor-demo
网友评论