Question :
- 2015-12-31 20:40:57.421 Ipone[2864:82763] -[MXViewController parallaxHeader]: unrecognized selector sent to instance 0x7a065450
- 2015-12-31 20:40:57.425 Ipone[2864:82763] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MXViewController parallaxHeader]: unrecognized selector sent to instance 0x7a065450’
上述问题是最让我头疼的,遇到过无数次,除了运气好之外,大部分这类问题最终都不了了之了,ok,这次在各种解决办法似乎都试过了之后,仍然不想放弃,所以继续研究。
问题出在哪儿呢?断点后发现,当在viewController里调用自定义的UIView类的方法时,出错了,也就是这一句
self.parallaxHeader.view = [MxHeaderView instanciateFromNib];
经过验证,发现是因为三方库导入不完全,所以属低级错误,事发后已赶紧吃药!
库文件中的一些理解
@property (nonatomic, strong, nullable, readonly) MXParallaxHeader *parallaxHeader;
而MXParallaxHeader类相当于UIScrollView的视差头部,继承与NSObject.
它的属性有 contentView:UIScrollView的内容视图
view:头部视图
height:头部视图的高度
minimumHeight:头部视图滑动时的最小高度
progress:视差头的进度值
继承自MXParallaxHeaderMode的mode属性:视差头的行为状态
最终,效果终于实现了。
总的来说,MXScrollViewController库的引用,需理解其结构为:
要注意NavigationController和要引用的库的关系。
其他一些小问题,当NavigationController继承了MXScrollViewController时,除了将初始启动界面调整外,还别忘了Storyboard Segue的设置,设置Class为MXScrollViewControllerSegue,否则可能会黑屏。