1

検索ページをpopovercontroller表示する必要があります。検索ページが表示されます。ユーザーがポップオーバー内のセルをタップすると、対応するページがpopovercontroller表示NSNotificationされpopoverます。正常に動作しますが、ナビゲーションが発生せずpopovercontroller、解雇のみが発生するという問題がありました。これはポップオーバーを作成するための私のコードです

-(void)revealRightSidebar:(id)sender
{
    searchpage* popoverContent = [[searchpage alloc]
                                  init];    
    UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:popoverContent] autorelease];

    //resize the popover view shown
    //in the current view to the view's size
    popoverContent.contentSizeForViewInPopover =
    CGSizeMake(320,650);

    //create a popover controller
    self.popup = [[UIPopoverController alloc]
                              initWithContentViewController:navigationController];

    [self.popup presentPopoverFromRect:_btnsearch.frame
                                            inView:self.view
                          permittedArrowDirections:UIPopoverArrowDirectionAny
                                          animated:YES];

    //release the popover content

    [popoverContent release];    

    [self resetReadViewToVerse:1];
}

このページのviewDidLoad方法で私は通知を入れました

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissThePopover) name:@"popoverShouldDismiss" object:nil];
}

searchpage に、このコードを配置して、対応する検索結果ページに移動します

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{          
     ParallelReadViewController *detailViewController = [[ParallelReadViewController alloc] initWithNibName:@"ParallelReadViewController" bundle:nil];

     //detailViewController.firstString = firstString;
     // ...
     // Pass the selected object to the new view controller.

     [self.navigationController pushViewController:detailViewController animated:YES];

     [detailViewController release];   
     delegate.selectedBook = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"book"];
     delegate.selectedChapter = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"chapter"];
     delegate.selectedVerse = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"verse"];
     [delegate reloadVerses];
     [[NSNotificationCenter defaultCenter] postNotificationName:@"popoverShouldDismiss" object:nil];
}

しかし、通知を削除すると、parallelReadViewControllerページ内の対応する検索に移動しますが、popoverそれ自体の中で、ここではpopover却下されますが、ナビゲーションはありません.これを行うのを手伝ってください.

4

1 に答える 1

0

クラスnavigationController内で宣言する必要があります。AppDelegateそれを使用しnavigationControllerて、必要なビューをプッシュします。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  
{                 
    ParallelReadViewController *detailViewController = [[ParallelReadViewController alloc] initWithNibName:@"ParallelReadViewController" bundle:nil];         
   //detailViewController.firstString = firstString;       
   // ...   
   // Pass the selected object to the new view controller. 
   [delegate.navigationController pushViewController:detailViewController animated:YES];          
   [detailViewController release];
   delegate.selectedBook = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"book"];
   delegate.selectedChapter = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"chapter"];
   delegate.selectedVerse = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"verse"];
   [delegate reloadVerses];
   [[NSNotificationCenter defaultCenter] postNotificationName:@"popoverShouldDismiss" object:nil];
}

これがあなたに役立つことを願っています.......

于 2012-05-17T13:00:51.710 に答える