При нажатии на кнопку (кнопка в ячейке) эта ячейка должна быть изменена? - PullRequest
1 голос
/ 20 марта 2012

Есть 1 таблица на uiview, и я хочу изменить высоту ячейки, когда кнопка нажата, высота другой ячейки остается такой же

Ответы [ 6 ]

1 голос
/ 20 марта 2012

Вы можете изменить высоту ячейки в методе делегата.

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if(indexPath.row == clickedRow)
    return newHeitht;

return cellHeight;
}

. Вы можете установить некоторое условие при нажатии кнопки и перезагрузить просмотр таблицы, используя [tableView reloadData].эта функция будет вызвана.вернуть новую высоту для конкретной ячейки.

1 голос
/ 20 марта 2012

Передайте событие нажатия кнопки в контроллер представления с помощью методов делегата и перезагрузите представление таблицы следующим образом.

[self.tableView reloadData];

В контроллере представления (т. Е. Источник данных для представления таблицы), внедрить метод heightForRowAtIndexPath и вернуть высоту, как требуется.

0 голосов
/ 20 марта 2012

1) Создайте пользовательский класс UITableViewCell. 2) Заполните свою ячейку, как считаете нужным. Я сам использую функцию типа 'hydrateWithArray'. 3) После заполнения данных измените размеры и переместите элементы, используя функции sizeToFit, чтобы заставить метки соответствовать размеру того, что вы в них помещаете. Подсказка: если сначала установить рамку метки и задать для нумерации строк значение 0 ... при заполнении текста и изменении размера, он будет растягивать метку только по вертикали и заставлять ширину оставаться прежней. 4) Создайте отдельную функцию (шахта называется selectedHeight), которая возвращает значение с плавающей точкой и высоту, на которую вы хотите поместить ячейку в таблице (на основе перемещенных объектов из шага 3).

- (float)calculatedHeight {
return textLabel.frame.origin.ytextLabel.frame.size.height5;
}

5) В вашем классе UITableView вам нужно будет импортировать ваш класс tableViewCell и создать фиктивный объект ячейки. Вы собираетесь использовать этот класс, чтобы вычислить, какой высоты должна быть каждая клетка. Затем в методе heightOfRowAtIndex ....

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
float height;
if ( !dummyCell ) dummyCell = [[CustomCell alloc] initWithFrame:CGRectMake(0,0,0,0) reuseIdentifier:@"myCell"];
[dummyCell hydrateWithTweet:[tableArray objectAtIndex:indexPath.row]];
height = [dummyCell calculatedHeight];
if ( height == 0 ) height = 50;
return height;
}

Это довольно простой пример, поэтому вам может понадобиться сойти с ума с проверкой ошибок в вашем конкретном случае, но это должно, по крайней мере, указать вам правильное направление. Наслаждайтесь!

0 голосов
/ 20 марта 2012
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {    

    if (isSearching && indexPath.row == selectedIndex) {
        return 110;
    }
    else {
        return rowHeight;       
    }
0 голосов
/ 20 марта 2012
-(void)buttonClick  {

[self.tableview reloadData];

selectedRow = //do something here 

}

и в вашем источнике данных UITableview

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath {

if(indexPath.row == selectedRow)

 return selectedRowHeight;
else
 return  defaultHeight;

}
0 голосов
/ 20 марта 2012
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:toReloadRows withRowAnimation: UITableViewRowAnimationNone];
[self.tableView endUpdates];

тогда

[self.tableView beginUpdates];
[self.tableView endUpdates];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...