Bes*_*esi 44 iphone cocoa-touch objective-c uitableview ios
通常UITableView,当用户从详细视图中弹回时,将使用动画取消选择a中的选定行.
但是,在我的情况下,我有一个UITableView嵌入式,UIViewController我必须手动执行,viewWillAppear如下所示:
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
// For some reason the tableview does not do it automatically
[self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow
animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
这是为什么以及如何解决它?
Her*_*erm 68
当你的主ViewController来自UITableViewController类型时,它有一个属性 clearsSelectionOnViewWillAppear,默认是YES- 所以它会自动清除选择.
这个属性不适用于UITableView,我想这是因为它也没有ViewWillAppear方法.
一个UIViewController的,因为它没有也不需要这个属性UITableView本来.
结论:当你不使用时,你必须自己实现它UITableViewController.
jan*_*del 33
取消选择didSelectRowAtIndexPath取代viewWillAppear:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//show the second view..
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*n R 23
在swift中,您可以在您的添加中添加以下行 viewWillAppear
if let row = tableView.indexPathForSelectedRow() {
tableView.deselectRowAtIndexPath(row, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
在swift 2中,没有parantheses:
if let row = tableView.indexPathForSelectedRow {
tableView.deselectRowAtIndexPath(row, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
在Swift 4(和3?)中清理了函数名称:
if let indexPath = tableView.indexPathForSelectedRow {
tableView.deselectRow(at: indexPath, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32201 次 |
| 最近记录: |