UITableView Separator Style Question

前端 未结 3 1871
面向向阳花
面向向阳花 2020-12-10 17:09

I have a tableview that is blank by default. User can add cells to it.

I want the separator lines to be clear when there are no cells, and grey when there are cells

3条回答
  •  醉酒成梦
    2020-12-10 17:50

    Maybe you are missing this?

    ...
    else
    {
        self.routineTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; // or you have the previous 'None' style...
        self.routineTableView.separatorColor = [UIColor grayColor];
    }
    

    EDIT : You need this but not only this... According to Apple Documentation :

    The value of this property is one of the separator-style constants described in UITableViewCell Class Reference class reference. UITableView uses this property to set the separator style on the cell returned from the delegate in tableView:cellForRowAtIndexPath:.

    That means the style wont change for cells that are already loaded. Just scrolling the table to force cells to redraw should make separators appearing...

    You then have to :

    1. set it BEFORE cell is inserted

      OR

    2. reload tableView when the first cell is added

    which is not easy to do with a NSFetchedResultsController, you should look into its delegate for a solution... or change direction, like hiding the tableView until you have a result maybe...


    EDIT 2 : You can also simply add this :

    [self.tableView reloadData];
    

    but that's a dirty workaround that will just reload full tableView, losing most benefits of NSFetchedResultsController...

提交回复
热议问题