2015-12-16 4 views
0

мне нужно изменить положение в UITableViewCell программно, это соответствующий код:Как изменить положение кадра UITableViewCell программно

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"leftMenuCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ; 
    } 


    if([[[self.arForTable objectAtIndex:indexPath.row] valueForKey:@"level"] intValue] == 1) 
    { 

     CGRect frame = cell.textLabel.frame; 
     frame.origin.x= 30; 
     cell.textLabel.frame= frame; 
    } 

    return cell; 

} 

Использование контрольных точек я могу видеть, что if условие работает, но код для редактирования положение кадра ничего не делает. Возможно ли отредактировать позицию, подобную этой, или мне придется подкласс UITableViewCell?

+0

подкласс TableCell и макет метода подвиды, изменить рамку ячейки. Посмотрите, работает ли это или нет! –

+0

@ Mr.T проблема в том, что у меня есть 2 типа ячеек, 0 - ячейка верхнего уровня, а 1 - дочерняя ячейка, то, что я делаю, - это меню слайдов с ячейками, содержащими под-ячейки, поэтому мне нужно отредактировать позиция только для подэлементов, и если я это сделаю в методе subviews макета, я отредактирую положение каждой ячейки – Signo

ответ

1

Я думаю, вы должны создать 2 подкласса UITableViewCell с двумя разными идентификаторами в зависимости от того, который вы хотите отобразить, если они разные.

Вы можете настроить кадр в каждом подклассе, как вы хотите, и это будет проще для вас, чтобы работать с ним

+0

Я думал о том же, но потом, как я могу узнать, какой из них я должен инициализировать? Поскольку метод cellForRowAtIndexPath требует, чтобы я объявлял UITableViewCell, но если я не знаю, является ли это родительской или дочерней ячейкой, я не могу инициализировать правильный подкласс – Signo

+0

. Что я не понимаю, это то, что если у вас есть дочерние клетки в родительскую ячейку, у вас есть пользовательский UITableViewCell, в котором вы инициализируете дочерние ячейки? – Manon

+0

no Я все еще не подклассифицировал что-либо, что я сделал для достижения родительского -> дочернего эффекта, использовал cell.indentationLevel, а затем на основе indentationLevel (0, 1), я знаю, какие из них являются родителями и дочерними. При щелчке родителя я показываю все его дочерние элементы и по щелчку дочернего я делаю все, что захочу (например, нажимаю на другое представление) – Signo

Смежные вопросы