табличное представление исчезает после изменения размера представления - PullRequest
3 голосов
/ 25 января 2011

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

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 обнаруживается и все работает, он также расположен в правильном положении.но размер моей таблицы не правильный.если я раскомментирую две строки кода для свойства size, табличное представление исчезнет из моего просмотра, и я понятия не имею, почему.*

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

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

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

мой просмотр таблицы с 913px:

landscape

portrait

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

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

UIViewAutoresizingNone
(рекомендуется делать это в методе viewDidLoad).
0 голосов
/ 25 января 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 там.

...