Нежелательная двойная панель навигации

Я сделал так, чтобы навигационная панель (верхняя панель) появлялась / исчезала при касании экрана, а также лежала поверх фонового изображения. Это работало, но с одной проблемой: у меня внезапно появилось две панели навигации! Сначала нажмите кнопку «Назад», а когда я нажму «Назад», нажмите кнопку «Назад». она открывает новую панель навигации с кнопкой «Vinene», которая является названием TableView, к которому она ведет. Это тот, который я хочу сохранить. Я думаю, что проблема где-то в DetailViewController.m или в didselectrowatindexpath в MasterViewController.m. Надеюсь, кто-то может увидеть проблему!

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];
    }
}
 Legolas26 июн. 2012 г., 02:27
выложите картинку пожалуйста

Ответы на вопрос(1)

Решение Вопроса

Обычно повторяющаяся панель навигации, как вы описываете, вызвана чем-то вроде двойного нажатия на один и тот же контроллер представления. Можете ли вы убедиться, что вы помещаете только один контроллер представления в свой стек навигации (через точки останова или запись в журнал?). Возможно ли, что winesDetailViewController уже находится в стеке навигации? Вы также можете попробовать записать значениеself.navigationController.viewControllers для подсказки.

Я бы также предложил переехать

self.navigationController.navigationBar.translucent = YES;

просмотретьWillAppear и

self.wantsFullScreenLayout = YES;

на ваш инициализатор (хотя я не думаю, что это решит вашу проблему).

 27 июн. 2012 г., 02:05
Если вы используете раскадровку таким образом, вы, вероятно, захотите использовать что-то вроде этого вопроса; не нажимайте на свой собственный контроллер детального просмотра.stackoverflow.com/questions/8130600/…
 ingenspor27 июн. 2012 г., 01:43
Я думаю, в этом проблема, это звучит логично. Я пытаюсь передать данные сома из табличного представления в подробное представление, но это сложно, потому что я новичок в этом. Я установил связь раскадровки из ячейки прототипа с подробным представлением в раскадровке и в коде didselectrowatindexpath, который я разместил в своем вопросе. Пока работает нормально, кроме двойного бара.

Ваш ответ на вопрос