Панель инструментов iOS не отображается

Я новичок в программировании на ios. проблема, с которой я сталкиваюсь, заключается в том, что я установил панель инструментов в своем файле xib, но после запуска приложения панель инструментов не отображается. я добавил эту строку ниже как в функцию viewDidLoad, так и в класс delegate.m, но панель инструментов все еще не отображается

self.navigationController.toolbarHidden = NO;

вот мой код

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    NSArray *languages = [userDefaults objectForKey:@"AppleLanguages"];

    EPubViewController *epubView = [[EPubViewController alloc] init];
    [epubView loadEpub:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"AtoZbook" ofType:@"epub"]]];
    self.navigationController = [[UINavigationController alloc]initWithRootViewController:epubView];
    self.navigationController.toolbarHidden = NO;

    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

EPubViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];

     self.navigationController.toolbarHidden = NO;


    loadingIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
    loadingIndicator.center = CGPointMake(toolbar.frame.size.width/2 ,toolbar.frame.size.height/2);
    [loadingIndicator startAnimating];
    toolbar.alpha = 0.8;
    [self.toolbar addSubview:loadingIndicator];


    [webView setDelegate:self];

    UIScrollView* sv = nil;
    for (UIView* v in  webView.subviews) {
        if([v isKindOfClass:[UIScrollView class]]){
            sv = (UIScrollView*) v;
            sv.scrollEnabled = NO;
            sv.bounces = NO;
        }
    }
    currentTextSize = 100;

    //Webview
    UISwipeGestureRecognizer* rightSwipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gotoNextPage)] ;
    [rightSwipeRecognizer setDirection:UISwipeGestureRecognizerDirectionLeft];

    UISwipeGestureRecognizer* leftSwipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gotoPrevPage)] ;
    [leftSwipeRecognizer setDirection:UISwipeGestureRecognizerDirectionRight];


    [webView addGestureRecognizer:rightSwipeRecognizer];
    [webView addGestureRecognizer:leftSwipeRecognizer];

    [self performSelector:@selector(stratRolling)];
}

person hellosheikh    schedule 15.03.2014    source источник
comment
Где вы создаете это UIToolbar? Вы обращаетесь к панели инструментов навигационного контроллера VC. Это панель инструментов, на которую вы хотели сослаться?   -  person Aaron    schedule 15.03.2014
comment
@ Аарон, я не знаю. Я только что скачал библиотеку EPUB Reader. когда я запускаю исходную библиотеку, сначала появляется табличное представление, а затем при нажатии на строку открывается книга EPUB. В этой панели инструментов кода отображается нормально. но поскольку я хочу сначала загрузить книгу, я добавил код в didFinishLaunchingWithOptions. который успешно загружает книгу, но не показывает панель инструментов   -  person hellosheikh    schedule 16.03.2014
comment
этот ответ фактически решил мою проблему. Вот ссылка stackoverflow.com/questions/22433040/   -  person hellosheikh    schedule 16.03.2014


Ответы (2)


UINavigationController уже содержит панель инструментов, и вам не нужно создавать ее самостоятельно. Если вы добавили один параметр в параметре «Смоделированные показатели», он предназначен только для демонстрации и фактически не добавляет панель инструментов в иерархию представлений.

Помимо оператора self.navigationController.toolbarHidden = NO; вам также потребуется вызвать [self setToolbarItems:items] в viewDidLoad для EPubViewController, где items — это NSArray, содержащий UIBarButtonItems.

Если ваша идея состоит в том, чтобы изначально иметь только счетчик на панели инструментов, вы можете заглянуть в - (id)initWithCustomView:(UIView *)customView конструктор UIBarButtonItem.

person Rickard Westerlund    schedule 15.03.2014
comment
И что я должен делать ? я получаю ошибку компилятора для элементов - person hellosheikh; 16.03.2014

Проблема, кажется, в вашем файле xib. Пожалуйста, проверьте, установлено ли автоматическое изменение размера панели инструментов? Обычно он должен быть выбран сверху и не выбран снизу. 1) Заходим в XIB. 2) Выберите панель инструментов Инспектор размера по умолчанию покажет это так3) Удалите нижнюю вертикальную линию и выберите верхнюю. Правильный параметр автоматического изменения размера выглядит следующим образом

Надеюсь это поможет.

person Manoj    schedule 15.03.2014
comment
скрытие панели инструментов не имеет ничего общего с изменением размера, объясните, пожалуйста, что вы подразумеваете под этим. - person Pawan Rai; 15.03.2014
comment
Поскольку вы ничего не меняете в файле .m, он должен быть виден. Я предполагаю, что это может быть из-за вашей настройки xib. Который в случае 4-дюймового симулятора ведет себя иначе, чем 3,5-дюймовый симулятор. Если это правильно, как на изображении выше. Тогда какое-то подпредставление должно быть поверх него. Можете ли вы поделиться экраном симулятора и подробностями xib? - person Manoj; 15.03.2014