2011-09-13 6 views
0

내비게이션 바는 표시 실패, jQuery과에서 잘 작동하지만 의 navigationItem이 popoverController에 표시되지 않습니다.

가있는 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

에서 팝 오버의 popoverController을 시작 popoverController의

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

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

모든 것이 작동합니다. 이미지 등이있는 아름다운 테이블이 있습니다.

답변

0

튜토리얼 http://mobiforge.com/designing/story/using-popoverview-ipad-app-development에 따라 해결책/문제점을 발견했습니다.

주목할만한 점은 UIButtons의 uiNavigationBar 요소를 사용하여 uiPopoverController를 만드는 가장 포괄적 인 도구임을 발견했습니다.

문제는 popover 자체가 그것을 호출하는보기에 속하는 것입니다. 내용은로드 된 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]; 
에서 호출
관련 문제