item-server简介
item-service中,界面UI往往是更具服务器返回的数据来创建了,比如直播软件中那些分类信息。所以如果请求失败的话,界面则无法初始化。下面来谈谈对失败的处理。
错误处理流程
一般流程就是,在失败的时候创建一个view加到屏幕上,有一个供点击的按钮等其他信息,点击按钮重新发起请求。
方案
如果每个控制器都重复这个操作,添加视图,处理点击方法等,如果处理该类型问题的控制器一多,将非常繁琐。下面给出我对于这类问题的方案。
- 首先得确保所有控制器继承于一个跟控制器BaseController
- 自定义一个view,在失败的时候用来显示,该view和alertview差不多,提供一个show方法,调用该方法加入到keyWindow上。
- BaseController 提供一个枚举类型属性eg:xxxFull,xxxNavc,xxxTabbar,来控制shouw的frame,子类根据自己的需求,实现其get方法即可
- BaseController 提供一个公共的show方法,供子类调用,子类在调用show方法的时候,首先会访问一下上一步骤中返回的枚举值,根据该值来指定显示view的fame,创建自定义view,并show.
- (void)show {
customView = [customView alloc] init];
if(self.type == xxx)
customView.frame = xxx;
[customView show];
}
- BaseController 处理view的点击动作,并转接到自己提供的一个公共方法中,如- (void)customErrorViewClick(BaseController中的为一个空的实现),子类重载该方法,进行对应逻辑的处理
该父类的设计可以看出,封装了view的创建和显示,并回调相应动作给子类。