黑马程序员技术交流社区
标题: 今天再次看视频,解决了以前遇到的一个小问题 [打印本页]
作者: SailY 时间: 2014-9-19 11:56
标题: 今天再次看视频,解决了以前遇到的一个小问题
题目在进阶教程---联系人管理---remov方法里,就是点击垃圾桶删除一行的那个
//2.删除最后一个子控
[UIView animateWithDuration:1.0 animations:^{
// CGRect tempF = last.frame;
// tempF.origin.x = 320;
// last.frame = tempF;
last.frame = CGRectMake(320 , last.frame.origin.y, 320, kRowH);
last.alpha = 0;
}completion:^(BOOL finished) {
// 上面的子控件只是移到最右边看不见而已,实际上还是有的,别忘记删了
[last removeFromSuperview];
//判断是否只剩一个子控件,设置删除item是否有效
_removeItem.enabled = (self.view.subviews.count != 1);
}];
说下两个问题吧:
1、注释的三行直接用了一行表示,这里只需要改X为320就行了,第一次写的时候把last.frame.origin.y写成了一个固定的值,所以删得时候往右跑的时候还一边往下
2、最后面 _removeItem.enabled = (self.view.subviews.count != 1);这一段放在外面就不行吗?
肯定不行,最开始看视频的时候理解错了
UIView animateWithDuration:1.0 animations:^{
X;
}completion:^(BOOL finished) {
Y;
}
Z;
可能程序执行完X的时候只用了0.001秒,接着执行Z,又用了0.001秒,再过0.998秒后执行Y。
Z先于Y执行了,与程序员初衷相违背,所以要把Z放到Y。往往程序跑完了,还要过会再执行completion里的代码
也就是说,如果放到最后面的话:
最后一个子控件跑到最右边看不到的地方去了,然后判断删除item是否有效(肯定是有效的,因为还没删),然后再来删除,明显错了
今天又看到了这里,提一下把
作者: ★彬★卍囧神 时间: 2014-9-19 15:35
还没看到那...
作者: 努力微笑 时间: 2014-9-19 17:37
你拿到入学名额了?拿到名额再看进阶也不完 基础多看看
作者: SailY 时间: 2014-9-19 23:13
就差最后面试了,你面试多少分?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |