2014-11-04 2 views
1

В настоящее время я являюсь подклассом UITableViewController. Я сделал каждую ячейку в UITableviewController больше, выполнив два метода.Как получить UITableView больше в iOS

Код:

(CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 

    CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; 
    return screenHeight * 1/2; 
} 

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

    CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; 
    return screenHeight * 1/2; 
} 

У меня есть две проблемы/вопросы

  1. мой стол, кажется, чтобы получить слегка толкнул вправо, как я могу это исправить?

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

Любой совет поможет. Благодарю.

ответ

1

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

self.tableView.rowHeight = self.tableView.bounds.size.height/2.0; 

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

Используйте только heightForRowAtIndexPath:, если есть строки с разной высотой.

FYI - Ни один из кода, который вы отправили, не повлияет на таблицу, которая, похоже, будет нажата вправо. Это должно быть вызвано чем-то другим.

Другое примечание. Имейте в виду, что [UIScreen mainScreen].bounds даст неправильные результаты в iOS 7 или более ранних версиях, если устройство находится в альбомной ориентации.

+0

Как говорит Мэдди, вы не должны осуществлять 'Tableview: heightForRowAtIndexPath:' метод если вам не нужны высоты ваших ячеек для разных ячеек. (Voted) Реализация этого метода может значительно замедлить прокрутку, особенно если в представлении таблицы отображается большой набор данных (много строк общих данных, а не количество строк на экране в любой момент времени). –

0

Чтобы изменить высоту UITableViewCell, вам нужно просто установить функцию heightForRowAtIndexPath. При создании пользовательской ячейки он все равно будет ограничен размером, определяемым указанной выше функцией.

0

Что касается вашего проблемы номер 2, да, если вы заменяете свои ячейки пользовательскими ячейками, вам не нужно внедрять методы делегатов высоты, поскольку у вас уже будет установлен этот набор в вашей пользовательской ячейке.

0

В iOS8 вы можете установить высоту строки, как это, чтобы получить автоматические высоты для ваших клеток (Если у вас есть ограничения по установке)

self.tableView.estimatedRowHeight = 44 //or your estimated row height 
tableView.rowHeight = UITableViewAutomaticDimension 
Смежные вопросы