2016-12-12 1 views
0

Я изменяю размер моего UITableView в соответствии с его количеством строк в cellForRowAtIndexPath:, поэтому следующая часть UITableView не была видна, а для части UITableView, который не отображается, cellForRowAtIndexPath: никогда не вызывается.Изменение рамки UITableView в соответствии с количеством строк в cellForRowAtIndexPath в Objective-c

Но мне нужно управлять кадром TableView в соответствии с количеством строк, пожалуйста, предложите, как я могу это реализовать. Thanks

+0

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

+0

Но я не хочу прокручивать tableviewcell, поэтому мне нужно изменить кадр в соответствии с количеством ячеек. – Arsad

+0

Вы использовали прокрутку в верхней части UITableView, чтобы просмотреть весь просмотр таблицы с помощью прокрутки? – CodeChanger

ответ

1

Если вы используете autoLayout

К Вашему UITableView добавить ведущую, отставая, верхнее и нижнее ограничение >= 0. Кроме того, добавить фиксированное ограничение высоты с приоритетом 750. Создание IBOutlet для это ограничение по высоте для вашего UIViewController. Теперь вы можете рассчитать свою высоту. Это позволит вашему UITableView только прокручиваться, если общая высота превышает границы экрана.

//dataArray = array of your data source 
tableViewHeightConstraint.constant = dataArray.count * rowHeight; 

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

+0

Спасибо, Рих, Это сработало. – Arsad

0

Вы можете использовать свойство размера UITableView.

[tableView reloadData]; // you need to reload data first before set frame 
tableView.frame =CGRectMake(tableView.frame.origin.x,tableView.frame.origin.x, tableView.frame.size.width, tableView.contentSize.height);