2013-03-20 4 views
1

У меня есть UIPopoverController. Я положил UINavigationController с двумя UITableViewcontrollers в нем.Изменение размера UIPopoverController

создать подкласс UITableView, я могу установить размер пирога с tableView.contentSizeForViewInPopover:

if (self.myPopoverController.isPopoverVisible) 
{ 
    [self.myPopoverController dismissPopoverAnimated:YES]; 
} 
else 
{ 
    MyRootTableView *rootTableView = [[MyRootTableView alloc]initWithStyle:UITableViewStyleGrouped]; 
    MyRootTableView.contentSizeForViewInPopover = CGSizeMake(POPOVER_SIZE.width, [self createContentHeighForTableViewController:tableView]); 
    MyRootTableView.boundaryDelegate = self; 

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableViewController]; 
    navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    navController.navigationBar.barStyle = UIBarStyleBlack; 

    self.myPopoverController = [[UIPopoverController alloc] initWithContentViewController:navController]; 
    self.myPopoverController.delegate = self; 

    [self.myPopoverController presentPopoverFromRect:frame inView:view permittedArrowDirections:arrowDirection animated:YES]; 
} 

В didSelectRowAtIndexPath в rootTableViewController в:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    DetailedTableViewController *tableViewController = [[DetailedTableViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    tableViewController.contentSizeForViewInPopover = CGSizeMake(POPOVER_SIZE.width, [self createContentHeighForTableViewController:tableViewController]); 
    tableViewController.delegate = self.boundaryDelegate; 

    [self.navigationController pushViewController:tableViewController animated:TRUE]; 
} 

createContentHeightForTableViewController: вычисляет высоту, необходимую для просмотра все ячейки в виде таблицы

Итак, для корневого TableViewController я установил conten t размер. Когда я создаю подробный контроллер представления, я устанавливаю contentSizeForViewInPopover на другой размер. Это отлично работает. Проблема, с которой я столкнулась, - это когда я вернусь к представлению корневой таблицы, contentSizeForViewInPopover по-прежнему установлен для представления таблицы подробностей.

Как изменить размер всплывающего окна при отображении или представлении таблицы?

+0

пожалуйста вставьте код больше .. –

+0

Ok, отправил весь код. – Padin215

ответ

0

Вы должны установить popoverContentSize на UIPopoverController непосредственно в методе viewWillAppear вашего родительского контроллера представления (или в другом подходящем месте). Везде, где вы хотите, чтобы размер содержимого popover обновлялся.

+0

Итак, в представлении таблицы появится размер содержимого в представлении? Как мне добраться до этой собственности? – Padin215

+0

в tableViewController, он имеет свойство 'setContentSizeForViewInPopover:'. Однако он не изменяет размер UIPopoverController. – Padin215

+0

Что-то немного подозрительно о коде, который вы опубликовали. Я не думаю, что UITableViewController имеет свойство «borderDelegate», но, возможно, у вас есть собственный подкласс UITableViewController с восходящей ссылкой на вещь, которая владеет myPopoverController. Отлично, в вашем подклассе UITableViewController переопределите viewWillAppear и вызовите 'self.whateverAwnsMyPopoverController.myPopoverController setPopoverContentSize: <вам нравится> анимированный: ];' –

3

Попробуйте использовать preferredContentSize вместо contentSizeForViewInPopover на вашем tableViewController (contentSizeForViewInPopover осуждается на iOS7)

Смежные вопросы