DZNSegmentedControl和XLForm联合使用
来源:互联网 发布:linux 查看文件编码 编辑:程序博客网 时间:2024/05/03 15:42
前言:
可能我还没有掌握IOS开发的精髓, 总感觉写ios代码像调bug, 任何一个功能开发完成之后总会有莫名其妙的问题, 最终这些问题很大概率会归结为”系统特性”.
正文:
问题一
项目中想要实现一个控制器的嵌套, 选了DZNSegmentedControl
控件, 使用过程中出现了如下图的问题
控件的使用在第二个控制器里, 当返回第一个控制器时, 应用直接崩溃. 工程项目中没有一行有用的日志输出, 只能一行一行看代码, 最终看代码并与demo对比没发现任何不妥, 只能一行行注释代码看运行效果:
经过运行测试, 发现是上述行代码引起的. 但是这个功能是什么相比不用多说,是很必要的,那怎么解决?
从现状分析我们可知, 当我们返回第一个控制器时,我们使用DZNSegmentedControl
控件的第二个控制器被销毁了, 由此引发崩溃. 而崩溃的原因在于 scrollview
的segmentedControl
代理不为空. 解决办法很简单, 在销毁时让它为空!
于是在第二个控制器中添加了如下代码:
-(void) viewDidDisappear:(BOOL)animated{ self.svcontent.segmentedControl = nil;}
这样整个程序就完美运行了!
ps: 后面为了写本文重新写了个简单项目, 发现有崩溃日志了,也是囧! 日志如下:
原因与我们推测是一样的, 当然还是使用上述解决办法!
问题二
当XLFormViewController
的view
嵌套仅scrollview
中时 ,我们发现XLFormRowDescriptorTypeSelectorPush
类型的行不能弹出选项了. 原因我们很容易知道, 因为它要弹出的是一个新的窗口, 而原始的XLFormViewController
并不在管理当前window. 当我们将行类型其换成XLFormRowDescriptorTypeSelectorAlertView
就能够正常显示了.
但我们同时又面临新的问题, 弹出的 “取消” 按钮是英文的.
使用XLFormRowDescriptorTypeSelectorAlertView
在整个工程路径中搜索, 发现XLFormSelectorCell.m
文件中有NSLocalizedString(@"Cancel", nil)]
的代码, 于是我们确信通过适配多语言可以修改XLFrom英文.
参考: 多语言适配
完整代码: https://github.com/talkfiled/SegmentedXLFormIssues
- DZNSegmentedControl和XLForm联合使用
- DZNSegmentedControl
- Intents和ListActivity联合使用
- insert 和select联合使用
- UIScrollerView和UIPageView联合使用
- 联合使用Spinner和setDropDownViewResource
- sqlite和listview联合使用
- find和tar联合使用
- Nant和Nunit和Nunit2Report联合使用
- 使用 RSS 和 Atom 实现新闻联合
- 联合使用业务代理和DAO模式
- 关于C#和MYSQL的联合使用
- ScrollBar和Slider控件的联合使用
- Eclipse 和Jboss联合使用问题汇总
- proteus和keil怎样联合使用
- 联合(union) 和结构体の使用
- 关于pvr和plist的联合使用
- mybatis 使用 and和or联合查询
- 《PHP操作数据库mysql的类 完成增、删、改、查操作》
- 微信小程序中wxml和wxss的样式说明,彻底搞定布局排版
- Luncen学习笔记 -- day02 入门
- 前三步汇总
- C语言的入门心得2——输出,输入以及内部计算
- DZNSegmentedControl和XLForm联合使用
- 71 C语言非阻塞式键盘监听
- Oracle 优化
- NGUI--三种方式监听事件
- (新)Kotlin搞起来 —— 1.Kotlin学习资料与环境配置
- linux学习文档(一)
- 利用LaTeX在双栏模板下将长公式分行
- leetcode113. Path Sum II
- linux安装tomcat