需求:
当前页面请求数据监听到登录过期,需要先登录然后返回当前页面,并刷新数据
思路:
监听登录过期:
项目中往往会封装网络请求类,在封装的get,post方法中监听,然后发出通知即可。
登录成功返回当前页面并刷新:
在每个类监听通知,然后登陆成功返回刷新也能做到,但是工作量大,耦合严重。
既然所有的控制器都要求监听登录过期的通知,那么可以用继承,继承基类,在基类里监听登录过期。同样,请求数据的方法可以放到基类中。收到登录过期通知->去登陆->发出登录成功通知->在基类中监听登录成功的通知->调用请求数据的方法。
现在又有问题,所有继承基类的VC都会收到登录过期和登录成功的通知。
那么多态用上了
解决思路:
在AppDelegate中监听登录过期和登录成功的通知,登录过期时获取最上层控制器,并声明属性baseVC *topVC,然后去登录,登录成功返回,topVC调用数据源方法刷新数据。
注意:如果topVC为真,说明已经去登录,再收到登录过期的通知不要再去登录,登录成功之后将topVC置为nil
网友评论