2013-08-12 1 views
6

У меня есть tableView с некоторыми ячейками. Каждая ячейка также содержит кнопку. Когда пользователь нажимает кнопку, ячейка должна быть незаметной, но не кнопка. Поэтому, когда пользователь нажимает на кнопку ячейки, которая не является кликабельной, эта ячейка должна быть снова нажата.Сделать ячейку не кликабельной, но на ней все еще нужно нажать.

Я пробовал:

cell.userInteractionEnabled = NO; 

... но кнопка не кликабельна больше.

Благодаря вашим усилиям заранее.

EDIT Я имею в виду: когда я нажимаю на ячейку, открывается новый вид. Но я хочу, чтобы никаких действий не произошло, когда ячейка не была «кликабельна».

+0

Попробуйте установить 'userInteractionEnabled' на отдельные элементы управления. –

+0

@MarcusAdams Но как я могу это сделать? – user2650439

ответ

14

Unclickable, в каком направлении? Если вы просто хотите, ячейка не может быть выбор, вы, вероятно, ищет для этого:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

Если вы хотите, чтобы ваш код, который будет выполняться, когда выбор отключен, просто проверить свойства выбора внутри вашей didSelectRowAtIndexPath: метод. Что-то вроде этого:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    if (cell.selectionStyle != UITableViewCellSelectionStyleNone) { 
     //(your code opening a new view) 
    } 
} 

Помните, что вам все равно придется играть с этим свойством, установив в UITableViewCellSelectionStyleNone, когда вы не хотите, чтобы ячейка быть выбор, и установка обратно UITableViewCellSelectionStyleBlue (или UITableViewCellSelectionStyleGray), когда вы хотите для выбора снова.

+0

+1 для использования кольца декодера. –

+0

Но я все еще могу щелкнуть по ячейке, и откроется новый viewController ... Единственное различие, которое я узнаю, это то, что они не являются цветом, когда ячейка выбрана ... или я получаю что-то неправильно здесь – user2650439

+0

Отредактировано. Попытайтесь посмотреть, помогло ли это. –

0

Удалить выделение, установив UITableViewCellSelectionStyleNone в качестве selectionStyle.

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

И ничего не делать в -tableView:didSelectRowAtIndexPath:

Вы можете быть избирательным в этом методе делегата, например, если только первая строка в первой секции имеет кнопку и не должны делать ничего:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSIndexPath *indexPathForDisabledCell = [NSIndexPath indexPathForRow:0 
                   inSection:0]; 
    if([indexPath compare:indexPathForDisabledCell] != NSOrderedSame) { 
     //Do whatever you do with other cells 
    } 
}