lita-jerry / JRPlaceHolder

Very easy to use the tableView placeholders, zero cost to integration
MIT License
166 stars 33 forks source link

需要两张placeholderView的时候. #1

Open xiaoyao20084321 opened 8 years ago

xiaoyao20084321 commented 8 years ago

您好,如果是业务需要.没网的时候显示网络错误的view....有网但是没有数据的时候,显示暂时没有数据的View...怎么做呢...

lita-jerry commented 8 years ago

这个可以通过property定义一种typedef,请求失败或者无网络的时候都修改该属性的值,然后在block中读取这个属性,返回对应的view,需要补充的是,每当配置的时候,都会清空之前的view,不会造成多次添加view的现象

lita-jerry commented 8 years ago

typedef NS_ENUM(NSInteger, JRFailtType) { JRFailtTypeNoNet, JRFailtTypeRequestFailt, JRFailtTypeOther };

@interface YouClass () @property (nonatomic, assign) JRFailtType failtType; @end

xiaoyao20084321 commented 8 years ago

谢谢啦,不过又测试出来一个问题,如果不设置self.automaticallyAdjustsScrollViewInsets = NO的话,就算设置居中,但是还是会出现向下偏移64点的问题...demo中的按钮就是这个问题.

lita-jerry commented 8 years ago

非常感谢,已经修正 UITableView+JRTableViewPlaceHolder.m Line:72

xiaoyao20084321 commented 8 years ago

客气啦...还要谢谢你开源呢... 不过....我现在测试的demo..程序第一次运行依然没有居中...但是再次点击reduce就居中了

lita-jerry commented 8 years ago

是这样的,程序从viewDidLoad开始,demo中已经配置了placeHolderView,紧接着又执行了tableView的reloadData方法,但是此时tableView还未加载到屏幕上,所以内存中有tableView但是没有读取automaticallyAdjustsScrollViewInsets值,加个断点验证一下: 在jr_configureWithPlaceHolderBlock中,Line34地方加个端点,运行... 执行到断点处,输入LLDB命令:po weakSelf.tableView 发现contentOffset: {0, 0},并不是我们预定的结果,然后再通过xcode—Debug—view debugging—capture view hierarchy查看view层级关系,发现其中并没有tableView,验证了刚才所说的。 回过头来,继续执行,等到程序完全加载完成,通过Add—Reduce到达断点处,LLDB输出结果为:contentOffset: {0, -64},查看view层级,发现有了tableView...

解决办法就是将viewDidLoad方法中的所有reloadData方法删除掉就可以了...我忽视了这个细节,谢谢哈

xiaoyao20084321 commented 8 years ago

这样啊.明白了.感谢作者,感谢开源