tableview исчезает после изменения размера представления

следующий код:

self.dataTableViewController = [[DataTableViewController alloc] initWithStyle:UITableViewStylePlain];
CGRect tableViewRect = self.dataTableViewController.view.frame;
tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
//tableViewRect.size.width = 320.0f;
//tableViewRect.size.height = 613.0f;
self.dataTableViewController.view.frame = tableViewRect;
[self.view addSubview:self.dataTableViewController.view];

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

некоторые идеи?

// редактируем:

хорошо, есть странное поведение. мой контроллер представления, в котором отображается мое табличное представление, находится в контроллере разделенного представления (слева)

self.contentSizeForViewInPopover = CGSizeMake(320.0, 704.0); никак не влияет на мой popovercontroller. я оставил его по умолчанию, из шаблона splittableviewcontroller. это всегда полная высота, если я в портретном режиме.

раскомментирование tableViewRect.size.height = 613.0f; работает, раскомментирование ширины — нет. установив высоту 613 пикселей, я получаю табличное представление высотой 313 пикселей. Какой!? Настройка моей высоты на 913.0f работает, это идеально подходит для пейзажа и портрета. что я не понимаю, так это то, что в альбомной ориентации он должен быть только 613 пикселей в высоту. и я хотел бы установить высоту моего всплывающего окна на ту же высоту, что и мой контроллер просмотра в ландшафте, чтобы моя таблица всегда была высотой 613. понятия не имею, что там происходит.

моя таблица с 913px:

пейзаж

портрет


person choise    schedule 24.01.2011    source источник
comment
Можете ли вы опубликовать ссылку для скачивания вашего исходного кода? Это будет работать намного лучше, если это возможно.   -  person Daniel Amitay    schedule 30.01.2011
comment
Извини, я не могу. проект wip и я уже сделал много дополнительных вещей. нет образца с этой простой структурой   -  person choise    schedule 31.01.2011


Ответы (2)


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

UIViewAutoresizingNone
(рекомендуется делать это в методе viewDidLoad).

person viggio24    schedule 02.02.2011

У меня это работает... Ваш код находится внутри контроллера табличного представления или в каких-то других классах? Я пробовал это (и это работает):

CGRect tableViewRect = self.tableView.frame;

tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
tableViewRect.size.width = 320.0f;
tableViewRect.size.height = 613.0f;

self.tableView.frame = tableViewRect;

[self.tableView setNeedsLayout];
[self.tableView setNeedsDisplay];

Кстати, я думаю, что размер iPhone составляет 320 x 480, поэтому я не уверен, почему вы используете там 613.

person Enrico Susatyo    schedule 24.01.2011
comment
это для айпада. этот код находится внутри контроллера представления (self). DataTableViewController — это tableviewcontroller. почему ты звонишь setNeedsLayout и setNeedsDisplay? - person choise; 25.01.2011
comment
Потому что каждый раз, когда вы меняете размер или выполняете анимацию UIView, вам нужно обновлять макет и отображение. Разве это не так? Если код предназначен для iPad, он тоже должен работать. Это работает сейчас? - person Enrico Susatyo; 25.01.2011
comment
не могу проверить это сейчас, вероятно, примерно через 9 часов - person choise; 25.01.2011
comment
привет выбор, я понимаю, что вы пытаетесь сделать сейчас, но я не могу здесь особо помочь... Я никогда раньше не использовал popovercontroller - person Enrico Susatyo; 26.01.2011