0

popOverを開くビュー(HomeView)があります。popoVer コンテンツ ビューは、テーブル ビューを含む (ListView) です。

ここで、行を選択すると、HomeView が閉じられ、新しいビュー (MapView) が開きます。

今のところ、問題なく動作しています。しかし、私のすべてのビューには、xib にタブバーが含まれています。ListView にタブ バーがありません。

だから、私は現在のモーダルビューでMapViewを開くだけです。しかし、それから私のナビゲーションは機能していません。

私のコードは次のとおりです。

HomeView.m

// ListView で popview を開く

-(IBAction)btnTableMenu_TouchUpInside:(id)sender{

ListView *popUp=[[ListView alloc] initWithNibName:@"ListView" bundle:nil];



    popView = [[UIPopoverController alloc]initWithContentViewController:popUp];
    popView.delegate =self;

    [popView setPopoverContentSize:CGSizeMake(300, 700)];
    [popView presentPopoverFromRect:CGRectMake(150,25,20,50) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}

ListView.m

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   [[NSNotificationCenter defaultCenter] postNotificationName:@"DismissModal"object:self];

    MapViewController *mapVC=[[MapViewController alloc]initWithNibName:@"MapViewController_ipad" bundle:nil];
    [self presentModalViewController:mapVC animated:YES];
    //[self.navigationController pushViewController:mapVC animated:YES];
}

どうすればこれを解決できますか??

4

3 に答える 3

0

あなたはちょうどこのようにします:-

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   [[NSNotificationCenter defaultCenter] postNotificationName:@"DismissModal"object:self];

    MapViewController *mapVC=[[MapViewController alloc]initWithNibName:@"MapViewController_ipad" bundle:nil]; 
    UINavigationController *navbar = [[UINavigationController alloc] initWithRootViewController:mapVC];
    navbar.navigationBar.tintColor =[UIColor colorWithRed:255/255.0 green:108/255.0 blue:61/255.0 alpha:0.1];


    [navbar setModalPresentationStyle:UIModalPresentationFormSheet];
    [navbar setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];

    [self presentModalViewController:navbar animated:YES];

}

MapViewController.mファイル内ViewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIBarButtonItem *CancleButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancel)];
    self.navigationItem.leftBarButtonItem = CancleButton;

}

-(void)cancel
{

    [self dismissModalViewControllerAnimated:YES];  

}
于 2013-01-17T12:47:15.927 に答える
0

これらに従ってみてください-

ListView.m

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   [[NSNotificationCenter defaultCenter] postNotificationName:@"DismissModal"object:self userInfo:[NSDictionary dictionaryWithObject:@"map" forKey:@"selectedView"]];
}

HomeView.m

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissModal:) name:@"DismissModal" object:nil];


- (void) dismissModal:(NSNotification *)notification
{
    [self dismissModalViewController:mapVC animated:NO];

    if([[notification.userInfo valueForKey:@"selectedView"] isEqualToString:@"map"])
    {
        MapViewController *mapVC=[[MapViewController alloc]initWithNibName:@"MapViewController_ipad" bundle:nil]; 
        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:mapVC];
        [self presentModalViewController:navController animated:YES];
    }
}
于 2013-01-17T13:56:34.473 に答える
0

ところで違いを知っていますか.. [self presentModalViewController:controller animated:YES];[self.navigationController pushViewController:controller animated:YES];

\presentModalViewController:controller を実行すると、最後のナビゲーション スタックが失われます。ビューを表示するには、別のナビゲーション コントローラーを作成する必要があります。これをきちんと読めば、アイデアが得られます。

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

于 2013-01-17T13:07:57.527 に答える