Why do my table view cells disappear when reloaded using reloadRowsAtIndexPaths?

后端 未结 12 1755
青春惊慌失措
青春惊慌失措 2021-02-02 12:20

I have a bare-bones sample project here:

http://dl.dropbox.com/u/7834263/ExpandingCells.zip

In this project, a UITableView has a custom UITableViewCell. In each

12条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-02-02 12:26

    I had a similar issue where I wanted to expand a cell when a switch is activated to display and extra label and button in the cell that is normally hidden when the cell is at its default height (44). I tried various versions of reloadRowsAtPath to no avail. Finally I decided to keep it simpler by adding a condition at heightForRowAtIndexPath like so:

        override func tableView(tableView: UITableView,heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        if ( indexPath.row == 2){
            resetIndexPath.append(indexPath)
            if resetPassword.on {
                // whatever height you want to set the row to
                return 125
            }
        }
        return 44
    }
    

    And in whatever code you want to trigger the expanding of the cell just insert tableview.reloadData(). In my case it was when a switch was turned on to indicate the desire to reset a password.

            @IBAction func resetPasswordSwitch(sender: AnyObject) {
    
            tableView.reloadData()
            }
    

    There is no lag with this approach, no visible way to see that the table reloaded and the expansion of the sell is done gradually like you'd expect. Hope this helps someone.

提交回复
热议问题