2010-07-21 6 views
6

Как вы программно определяете название UIPopOver View?Задайте название UIPopOver View Programmatically

Я нашел образец кода, но не смог установить заголовок.

myView *theView = [[myView alloc] initWithNibName:@"myView" 
             bundle:nil]; 
UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentViewController:theView]; 
[aPopover setDelegate:self]; 
[aPopover setPopoverContentSize:CGSizeMake(320, 320) animated:YES]; 

[theView setPopover:aPopover]; 
[theView release]; 

[self.popoverController presentPopoverFromRect:CGRectMake(510,370,0,0) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
+0

Я не уверен, но поиск Google вокруг говорит мне, что он не может иметь название – vodkhang

+0

Это везде. Например, приложение Mail в портретном режиме. В окне popover отображаются ваши письма. – Yazzmi

ответ

7

Вам необходимо обернуть контроллер вида в UINavigationCotnroller, который добавит навигационную панель с соответствующим заголовком для контроллера вида. Что-то вроде этого:

UINavigationController *container = 
    [[[UINavigationController alloc] initWithRootViewController:viewController] autorelease]; 

Тогда просто инициализировать поповер использовать container вместо этого и представить его как обычно.

+0

Это не выглядит так, если вы добавляете навигационную панель из IB. – Yazzmi

+0

Ах конечно ... да, popover изменяет навигационный контроллер, чтобы выглядеть черным и полупрозрачным. Поэтому вы должны обернуть контроллер вида в контроллер навигации. –

+0

Не могли бы вы показать мне, как это сделать, используя код adobe? спасибо! – Yazzmi

0

Попробуйте установить название contentViewController вашего поповер:

theView.title = @"My Title"; 

или

theView.navigationItem.title = @ "Мой Заголовок";

4

да, именно. все это может выглядеть следующим образом:

InfoView *infoView = [[InfoView alloc] init]; 
UINavigationController *container = [[[UINavigationController alloc] initWithRootViewController:infoView] autorelease]; 
UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:container]; 

infoView.title = @"My Title"; 

[pop setDelegate:self]; 
[pop setPopoverContentSize:CGSizeMake(320, 400)]; 
[pop presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
[infoView release]; 
0
let popoverContent = (self.storyboard?.instantiateViewControllerWithIdentifier("Popover"))! as UIViewController 
popoverContent.title = "Details" 
let nav = UINavigationController(rootViewController: popoverContent) 
nav.modalPresentationStyle = UIModalPresentationStyle.Popover 
let popover = nav.popoverPresentationController 
popoverContent.preferredContentSize = CGSizeMake(100, 100) 
popover!.delegate = self 
popover!.sourceView = self.view 
popover!.sourceRect = CGRectMake(100,100,0,0) 

self.presentViewController(nav, animated: true, completion: nil) 
Смежные вопросы