切换到其他视图时,部分取消选择UITableView

时间:2013-11-16 17:14:12

标签: ios uitableview

当切换到其他视图或以模态方式呈现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; 

3 个答案:

答案 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];
}