Подтвердить что ты не робот

Невозможно изменить высоту UITableView

В приложении Apple iPhone Clock, когда пользователь добавляет новый сигнал тревоги, появляется всплывающее окно. Я пытаюсь создать пользовательский интерфейс, подобный этому.

В настоящее время у меня есть UITableViewController в качестве контроллера корневого представления UINavigationController.

У меня также есть UIDatePicker, добавленный как подчиненный в UINavigationController:

[self.navigationController.view addSubview:mydatePicker];

Однако у меня есть около 10 + строк в UITableview (UITableViewController), и как только я добавил UIDatePicker, я не могу прокрутить, чтобы просмотреть все ячейки.

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

Я попробовал несколько вещей, чтобы изменить его размер, все безрезультатно. В приведенном ниже коде я произвольно выбрал 50 для новой высоты.

Сначала попытался изменить высоту границ:

CGRect bounds = [self.tableView bounds];
[self.tableView setBounds:CGRectMake(bounds.origin.x,
                                     bounds.origin.y,
                                     bounds.size.width,
                                     50)];

Затем попытался изменить высоту кадра:

CGRect tvframe = [self.tableView frame];
[self.tableView setFrame:CGRectMake(tvframe.origin.x,
                                    tvframe.origin.y,
                                    tvframe.size.width,
                                    50)];

Затем после googling я попытался изменить высоту contentSize:

CGSize thesize = self.tableView.contentSize;
thesize.height = 50;
self.tableView.contentSize = thesize;

Ничего из этого не оказало никакого влияния на размер UITableView. Я все еще не мог прокручивать, чтобы увидеть все ячейки.

Позже я попытался использовать те же методы, что и выше, но в UINavigationController вместо UITableView. Мне тоже не повезло.

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

Спасибо за любую помощь, которую вы можете предоставить.

4b9b3361

Ответ 1

В UITableViewController ссылка на класс:

создает неустановленный объект UITableView с правильными размерами и авторезистировать маску

И цитата из Руководство по программированию таблиц для iOS, в котором конкретно рассматривается это поведение:

Примечание.. Вы должны использовать подкласс UIViewController, а не подкласс UITableViewController для управления представлением таблицы, если вид для управления состоит из нескольких подзонов, только один из которых является табличный вид. Поведение класса UITableViewController по умолчанию чтобы сделать вид таблицы, заполнить экран между навигационной панелью и панель вкладок (если они есть).

Если вы не хотите, чтобы контроллер табличного представления устанавливал размер вашего таблицы, вам нужно вместо этого использовать UIViewController. См. Ссылку, которую я опубликовал выше, в Руководство по программированию таблиц для iOS для других вещей, которые следует учитывать при переходе по этому маршруту.

Ответ 2

У меня была такая же проблема, как вы упомянули. Мне не удалось изменить высоту таблицыView UITableViewController. Я попытался изменить рамку и центры self.view и self.tableview. Но не удалось. Затем я решил это с помощью трюка, изменив содержимое tableview.Inset.

self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 44.0f, 0); // here you can replace 44.0f with your height

Ответ 3

Вам нужно сделать UITableView подвью вашего основного вида, чтобы надежно изменить его размер.

Кадр - это правильное значение, которое нужно изменить, как только вы сделали это изменение.

Ответ 4

Я не знаю, в чем твоя настоящая проблема. но для изменения высоты вашего UITableView и отобразите все строки в UITableView напишите следующий код.

self.tblView.frame = CGRectMake(0, 0, 320, 50);

попробуйте.

Ответ 5

Вы принимаете контроллер uitableview, вместо этого используйте uiviewcontroller, в котором добавляется uitabelview. Теперь вы можете размер uitableview.