如何在完成UITableview的动画时采取行动?
我正在尝试缩小UITableview单元格并删除收缩后不可见的单元格子视图.为了缩小单元格,我调用[tableview beginUpdates]和[tableview endUpdates],并更改由UITableview的highForForWowAtIndexPath数据源方法返回的单元格的高度.
挑战是,我需要tableview完成收缩,以便在我删除子视图之前,子视图不在视线范围内.如果我在调用[tableview endUpdates]之后(或之前或之间)放置代码从单元格中删除子视图,那么子视图会很快被删除(它不会等待动画)并且它看起来很有趣.
我的想法是我希望能够设置完成动画后运行的回调,并删除回调中的subView
我在根视图控制器中使用下面的代码来隐藏UITableView的标头(标头中有一个UISearchbar).它在应用程序启动时显示并显示tableView ..但是之后,当选择一行时,将推送详细视图,并且用户弹出详细视图,uitableview标头现在在根视图中可见,这不是我所期待的.
这是相关的功能:
- (void) viewWillAppear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
self.tableView.contentOffset
= CGPointMake(0, self.tableView.tableHeaderView.frame.size.height);
//it's as if the line above is ignored on when returning from a pushed detail view
}
- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// theContentOffSet works when I put it hear, but then the user can see it which is not desired
}
Run Code Online (Sandbox Code Playgroud)
行'[self.navigationController setNavigationBarHidden:YES animated:animated];' 肯定是问题的一部分,因为没有它,代码工作,tableView标题滚动出视图.但是,根视图的要求是隐藏导航栏,但在详细视图中显示.
我用双击UITapGestureRecognizer设置了一个UITableView.但是,用户双击单元格的尝试只是两次启动didSelectRowAtIndexPath.这两个应该一起工作吗?
(我知道我可以用一个单击手势识别器来代替didSelectRowAtIndexPath的内置行为,但是这里的问题是:单元格还有一个按钮,当我添加单击时我不能按下手势识别器.此外,我已经看到用户在didSelectRowAtIndexPath中构建双击功能的例子,但这不是一个太多的黑客?)
我希望能够检测用户何时点击我的UITableView的最后一行,但不会对滚动表的能力产生负面影响.有没有比继承UITableView更简单的方法(即覆盖表的touchesBegan)?
我想这样做的原因是:当表为空(第一次打开应用程序)或只有几个单元格时,可以点击屏幕上的所有空间来调用Add方法.
我尝试在一个大的tableview页脚中使用一个没有图像(即不可见)的大型自定义UIButton,但按下该按钮会阻止任何滚动,但是一旦已经有一些单元格,你就想滚动.我想我可以在表格中有超过零的项目时从页脚中删除按钮,但是当表格中有几个项目时,这对我没有任何作用.
谢谢你的任何想法!