Search code examples
iosiphoneuitableviewipadaccessorytype

Remove Table Accessory Indicator from Row


Is there a way to disable accessory indicators from rows individually? I have a table that uses

- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath
    {
        return UITableViewCellAccessoryDetailDisclosureButton;
    }

I need to disable it (remove icon and not trigger a detail disclosure event) for a single row. I thought this would do it, but has no result. The indicator still appears and it still receives and event on touch.

cell.accessoryType = UITableViewCellAccessoryNone;

Solution

  • That function call 'accessoryTypeForRow..' is depeecated now (from sdk 3.0 +).

    Preferred way of setting the accessory type is in 'cellForRowAt..' method

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
        static NSString *CellIdentifier = @"SomeCell";
    
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        }
    
        // customize the cell
         cell.textLabel.text = @"Booyah";
        // sample condition : disable accessory for first row only...
         if (indexPath.row == 0)
             cell.accessoryType = UITableViewCellAccessoryNone;
    
         return cell;
    }