7

画面をタップするとナビゲーションバー(トップバー)が表示/非表示になり、背景画像の上にも重ねて表示します。動作しましたが、問題が1つあります。突然2つのナビゲーションバーが表示されました。まず、「戻る」という名前の戻るボタンがあり、「戻る」を押すと、「Vinene」という名前の戻るボタンが付いた新しいナビゲーションバーがポップアップします。これは、テーブルビューのタイトルです。それは私が残したいものです。問題は、DetailViewController.mまたはMasterViewController.mのdidselectrowatindexpathのどこかにあると思います。誰かが問題を見ることができることを願っています!

DetailViewController.m:

@interface WinesDetailViewController ()

@end

@implementation WinesDetailViewController

@synthesize wineDictionary;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

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

}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

self.navigationController.navigationBar.translucent = YES;
                         self.wantsFullScreenLayout = YES;

UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideShowNavigation)] autorelease];
                                                                                                         tap.numberOfTapsRequired = 1;
                                                                                                 [self.view addGestureRecognizer:tap];
}

- (void) hideShowNavigation
{
[self.navigationController setNavigationBarHidden:!self.navigationController.navigationBarHidden];
}

- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (BOOL)hidesBottomBarWhenPushed{
return TRUE;
}


@end

MasterViewController.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];    

    NSDictionary *dictionary = [wine libraryItemAtIndex:indexPath.row];

    if (winesDetailViewController == nil) {
        // Init the wine detail view
        winesDetailViewController = [[WinesDetailViewController alloc] init];
    }
    // Here you pass the dictionary
    winesDetailViewController.wineDictionary = dictionary;

    [self.navigationController pushViewController:winesDetailViewController animated:YES];
    }
}
4

1 に答える 1

4

通常、あなたが説明したような繰り返しのナビゲーション バーは、同じビュー コントローラーを 2 回押すなどの原因で発生します。単一のビュー コントローラーのみをナビゲーション スタックにプッシュしていることを確認できますか (ブレークポイントまたはログを使用しますか?)。winesDetailViewController が既にナビゲーション スタックにある可能性はありますか? self.navigationController.viewControllersヒントとしての値をログに記録することもできます。

引っ越しもおすすめ

self.navigationController.navigationBar.translucent = YES;

表示するWillAppearと

self.wantsFullScreenLayout = YES;

イニシャライザに(これで問題が解決するとは思いませんが)。

于 2012-06-26T00:55:00.813 に答える