элемент навигации не отображается на popoverController - PullRequest
0 голосов
/ 13 сентября 2011

Панель навигации не появляется, отлично работает в UITableView, но не работает внутри popoverController

Инициирует popoverController popover в UIViewController

-(IBAction) btnShowMovies:(id) sender {

    if (self.popoverController == nil) {

        teamAController *movies = 
        [[teamAController alloc] 
         initWithNibName:@"teamAController" 
         bundle:[NSBundle mainBundle]]; 

        UIPopoverController *popover = 
        [[UIPopoverController alloc] initWithContentViewController:movies]; 

        popover.delegate = self;
        [movies release];

        self.popoverController = popover;
        [popover release];
    }

    CGRect popoverRect = [self.view convertRect:[btn frame] 
                                       fromView:[btn superview]];

    popoverRect.size.width = MIN(popoverRect.size.width, 100);
    [self.popoverController 
     presentPopoverFromRect:popoverRect 
     inView:self.view 
     permittedArrowDirections:UIPopoverArrowDirectionDown 
     animated:YES];
}

teamAController.h

@interface teamAController : UIViewController <UITableViewDataSource, UITableViewDelegate> {        
    UITableView *tableView;
    NSArray *theArray;
}    
@property (nonatomic, retain) NSArray *theArray;
@property (nonatomic, retain) IBOutlet UITableView *tableView;

-(void) createArray;

teamAController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.title= @"FooBarExtreme";    
    self.contentSizeForViewInPopover = CGSizeMake(250.0, 300.0);        
    [self createArray];
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
}

Все работает, у меня есть прекрасная таблица с изображениями и т. Д., Корректного размера и размещенного всплывающего окна, просто нет строки заголовка .....?

1 Ответ

0 голосов
/ 13 сентября 2011

Я нашел решение / проблему, следуя учебнику по http://mobiforge.com/designing/story/using-popoverview-ipad-app-development.

Стоит отметить, что я нашел это наиболее полным по созданию uiPopoverController с элементами uiNavigationBar из UIButtons.

Проблемав том, что сам поповер принадлежит представлению, которое его вызывает.Содержимое получено из загружаемого в него xlib / view.Но не титулбар.Вы называете это в представлении родительского представления.

Этот код находится в главном представлении и вызывается из UIButton

// BookMarksViewController is the class that contains the code/xib for the popover's content
// Of overarching importance is creating it as a UITableViewController

if (self.popoverController == nil) {
    BookMarksViewController *bookMarksViewController = 
    [[BookMarksViewController alloc]      
     initWithNibName:@"BookMarksViewController" 
     bundle:[NSBundle mainBundle]]; 

    // Here's the rub: because in effect this view is controlling the popover
    // we have to assign nav bar stuff here. Sigh.
    bookMarksViewController.navigationItem.title = @"Territories";
    UINavigationController *navController = 
    [[UINavigationController alloc] 
     initWithRootViewController:bookMarksViewController];

    bookMarksViewController.contentSizeForViewInPopover = CGSizeMake(320, 400);

    UIPopoverController *popover = 
    [[UIPopoverController alloc] 
     initWithContentViewController:navController]; 

    popover.delegate = self;
    [bookMarksViewController release];
    [navController release];

    self.popoverController = popover;
    [popover release];
}

CGRect sourceRect = [self.view convertRect:[btn frame]  fromView:[btn superview]];

[self.popoverController presentPopoverFromRect:sourceRect 
inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
...