公司是做电商项目的,好多界面都需要进行判断用户是否登录,用户登录后需要做什么。可能我这么写大家没有直观的印象,大家可以把自己手机里地淘宝、天猫啥的退出登录,然后浏览体验一下,就能知道其实很多操作都需要获得用户数据,获取用户数据就需要用户登录,所以用户登录界面会时不时的跳出来...
关键点: 通知
以天猫为例,登录界面是present出来的,我也是用同样的方式实现。当然了,如果想使用push也不是不可以,在登录界面判断下是怎么进来的就可以了,然后针对进入的方式做出相应地退出。
下面我就简单的说下我是怎么实现的。
首先,要创建好登录界面。这里我使用xib进行创建的,代码也一样。
然后写返回按钮的点击事件执行代码
[self dismissViewControllerAnimated:YES completion:nil];
登陆按钮中该怎么写还怎么写,就是在最后要发出一个通知
// 发送通知
[[NSNotificationCenter defaultCenter] postNotificationName:kLOGIN_NOTIFICATION object:controllerName];
最后要在登陆界面的viewDidLoad中获得登陆成功的通知
//登陆成功后的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccessNotification:) name:kLOGIN_NOTIFICATION object:nil];
loginSuccessNotification所对应的方法:
// 登陆成功后通知事件
- (void)loginSuccessNotification:(NSNotification *)notification
{
NSString *controllerName = notification.object;
//如果是三方登录或者点击登陆按钮登陆
if ([controllerName isEqualToString:@"XZLoginViewController"])
{
//返回
[self backUpPage];
}
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
其他地方同样如此,获取到通知,然后就能干自己想干的事情了。。。当然,可能一个控制器中有多个地方要跳转到登录界面,我的解决办法就是使用枚举标记下是哪个控件,然后根据枚举值进行相应地处理。