野鸟装备2.0问题一览

原创 2015年11月19日 11:04:19
2.0发布了(在这里安装内测版)。这个大版增加了UGC功能和任务体系,开了发近两个月,碰到的问题也是最多的。

下拉刷新失效。

当UITableView、UICollectionView不够一页的时候,下拉的时候都不会触发UIScrollVIew的scrollViewDidScroll代理方法。由于下拉刷新控件基于scrollViewDidScroll代理方法来实现。所以在创建UITableView、UICollectionView的时候添加:collectionView.alwaysBounceVertical = YES 就好了。//垂直方向遇到边框是否总是反弹

AppDelegate.window与 [UIApplication sharedApplication].keyWindow的区别

在有UIAlertView时,如果调用了keyWindow,就会出现以下异常。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UIAlertShimPresentingViewController navigationBar]: unrecognized selector sent to instance 0x7fb35b6a5c70'
AppDelegate* appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
UIWindow* window = appDelegate.window;
UIWindow* keyw = [UIApplication sharedApplication].keyWindow;
在没有使用UIAlertView时,两者一样,均为我们应用的的Window,其delegate为我们的rootViewController。
在调用了UIAlertView show之后,到UIAlertView消失之前,keyw的值是UIAlertControllerShimPresenterWindow,其delegate是UIAlertShimPresentingViewController。

leftBarButton与rightBarButton的设置。

遵从UINavigationController的设计初衷,当UINavigationController的子VC有孙VC时,子VC的navigationItem.title,navigationItem.titleView,leftBarItems,rightBarItems等属性一定要从孙VC中获取,不要在孙VC的viewWillAppear,viewDidAppear中直接修改NavigationBar.topItem。否则,像野鸟装备的第一层TabBar拥有几个子VC的复杂情况,会在跳转过程中,发生NavigationBar上的内容显示混乱的问题,老码农吃过亏之后痛下决心梳理NavigationBar的显示逻辑,严格遵循UINavigationController的设计初衷,才从痛苦中解脱出来。

关于VC跳转时结束自身导致的白屏问题。

VCA在结束当前启动新的VCB时,如果使用present切换时,会留下白屏。push时不会有。参见野鸟装备的首页。初次登录显示的是视频播放,用户点击“立即体验”后,结束自身并跳转到登录页面。一开始我的方案是直接把视频播放VC设置为rootVC,在用户点击“立即体验”时,结束自身,并present一个NavigationVC,NavigationVC的root是首页的TabVC。但这样做无论机器性能如何,始终有白屏闪现。后来改为把NavigationVC设置为rootVC,并把视频播放VC设置为NavigationVC的root,在用户点击“立即体验”时,pop视频播放VC,再push首页TabVC。这样就不会有白屏出现了。

NavigationVC的root在特殊情况下有默认leftBarItem的问题。

这个问题跟上面第4个问题是有关联的。在第4个问题中,白屏的问题是解决了,但首次进入时,首页TabVC的第一个子VC,也就是“鸟瞰”VC的左上角会显示系统默认的返回。
最后解决方案是给首页TabVC的几个子VC加上空的leftBarItem。

iOS7.0下,VC结束时回调delegate导致崩溃。

iOS7.0上,如果VC是被present出来的,当dismiss自身之后,其property都会被置为nil。这个要注意,尤其是需要回调给调用方结果的,需要先把property保存在局部变量中,再dismiss自身,再调用delegate的方法。

iOS7.0下无法启动新VC。

UIImagePickerController的回调方法中,如果你先dismiss UIImagePickerController,然后紧接着就要启动新的VC时,一定要小心,在iOS7.0上面,会发现启动不起来新的VC,Xcode控制台会打印:Attempt to present <XXXViewController> on <UINavigationViewController> while a presentation is in progress!
原因是启动新VC时,UIImagePickerController还没有完全dismiss掉。解决方案就是:
[picker dismissViewControllerAnimated:NO completion:^{
     在这里启动新VC。
}];

判断当前VC是否可见。

我这里有一个需求,是在用户分享(微信、QQ等)完成之后,需要上报分享信息。选择上报的时机就是用户完成分享,回到野鸟装备时。因为上报模块可能存在于多个VC中,这时就需要有一个逻辑判断,只有当前可见的VC才具备上报资格。如何判断,有几种方式,我选的是第三种:
1、appear和disappear之间设置BaseViewController的变量
2、判断topVC是否自己,这个要注意NavigationVC和TabBarVC的情况。
3、判断当前VC的view.window是否为nil。这个最简单。

UIButton设置contentMode无效。

这么搞就可以了
imageButton.imageView.contentMode = UIViewContentModeScaleAspectFill;
imageButton.contentHorizontalAlignment= UIControlContentHorizontalAlignmentFill;
imageButton.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; 

SDWebImage加载图片失败的问题

有一个选项,SDWebImageRetryFailed,默认是没有开启的,因此一旦图片加载失败,就不会再重试。需要把这个选项打开。
版权声明:本文为农场老马原创文章,未经农场老马允许不得转载。

相关文章推荐

arm 编程常见问题一览

  • 2009-04-17 10:00
  • 379KB
  • 下载

Objective-C 2.0 新特性一览 – 属性。

属性是一种定义类所提供的数据的通常方法。在Movie这个类里,诸如“标题”,“工作室”和“发布年份”等等都算是属性。这里是用Objective-C 1.x语法定义的Movie类: 1 2 3 4...

智能装备调试和安检问题的解决办法

随着工业4.0时代的到来,产业改造升级的任务已经刻不容缓。各种高度智能化自动化信息化的设备被越来越多的应用到各行各业。由于设备的科技含量越来越高,涉及的领域也越来越宽广,因此通常一套设备既要有功能丰富...

【算法导论】装备线调度问题

本程序为算法导论中动态规划章节(15.1)的装配线调度问题的C++实现代码,具体问题就不详细说明了,代码如下: #include #include const int max_len = 6; i...

建立 安卓下的gdb 环境 解决问题一览

最近要 调试一个 camera 相关的工具,原先已经在 linux 下已经跑通运行,估计以后会随着项目的架构变化迁移到安卓,提前移植编译好,使用adb shell 尝试没有跑通,想采用 gdb 来详...

opencv2.0在mfc中使用vector崩溃问题

首先我描述一下我的机器配置环境 OpenCV2.4.10+vs2008+vs2010+vs2013,由于Opencv2.4.10已经完成了vc10以上的配置库编译。当我使用opencv使用findco...

vue 2.0 从入门安装配置到学习遇到的问题

解决vue项目中,用submit等编辑器格式化后,因为缩进导致错误原因: 因为在 package.json文件我们可以发现,在文件中默认安装了eslint-loader模块 eslint-loader...

编译hadoop2.0(0.23.0)及运行的一些问题

svn co http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.0.0-alpha xxx linux: 参考...

yii2.0高级框架配置时init.bat秒退问题的解决

xampp环境下yii2.0高级框架配置时init.bat秒退问题的解决
  • Jjwxyz
  • Jjwxyz
  • 2016-04-01 22:32
  • 1408

ElasticSearch2.0 index中文乱码及解决问题

今天使用HttpClient 在ElasticSearch2.0上index documents时,由于document中包含有中文,浏览器打开一看,发现中文乱码,index的代码如下: util....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)