当切换到其他视图或以模态方式呈现segue时,取消选择UITableview的单元格,但保留所选单元格的高度。
在表格和详细视图之间来回切换时,有没有办法保持单元格的选择?
或强迫身高 下面的forrow方法被称为?
问题是当我的取消选择发生时,细胞失去焦点。但我的身高并未重置。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// If our cell is selected, return double height
;
if(self.selectedIndexPath.row==indexPath.row && self.selectedIndexPath!=NULL) {
return kCellHeight * 2.0;
}
// Cell isn't selected so return single height
return kCellHeight;
}
我的tableView作为Simple UIViewController内的属性,视图控制器是:
@interface FirstViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
和财产:
@property (weak, nonatomic) IBOutlet UITableView *tableView;
答案 0 :(得分:0)
如果您使用的是UITableViewController
的子类,则可以将clearsSelectionOnViewWillAppear
设置为NO
。
如果你不是,那意味着你明确地删除了选择(听起来这是你的问题)或重新加载重置可见单元格的表格(但也会重做高度)。您需要停止这样做或确保之后重新应用选择。
答案 1 :(得分:0)
以下代码强制调用tableView:heightForRowAtIndexPath::
-(void)viewDidAppear:(BOOL)animated{
[self.tableView reloadData];
}
请注意,只有拥有UITableViewController时,self.tableView才有效。使用更简单的UIViewController,您必须将tableView添加为属性和IBOutlet。
答案 2 :(得分:0)
请检查你的self.selectedIndexPath和
-(void)viewDidAppear:(BOOL)animated{
NSLog(@"selectedIndexPath : %@",self.selectedIndexPath);
// If self.selectedIndexPath is nil then put below line in your code.
self.selectedIndexPath = [self.tableView indexPathForSelectedRow];
[self.tableView reloadData];
}