Добавьте UINavigationBar программно с помощью кнопки "Готово"

Итак, у меня есть модальный вид и вы хотите добавить UINavigationBar программно с помощью кнопки "Готово", чтобы закрыть это представление, когда пользователь закончит чтение содержимого.

Любые идеи о том, как это сделать, и если это возможно без использования конструктора интерфейса?

Ответ 1

Прошу прощения, что никто здесь на самом деле не читал ваш вопрос... вот код, который вы ищете:

UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
navBar.backgroundColor = [UIColor whiteColor];

UINavigationItem *navItem = [[UINavigationItem alloc] init];
navItem.title = @"Navigation Bar title here";

UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"Left" style:UIBarButtonItemStylePlain target:self action:@selector(yourMethod:)];
navItem.leftBarButtonItem = leftButton;

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Post" style:UIBarButtonItemStylePlain target:self action:@selector(yourOtherMethod:)];
navItem.rightBarButtonItem = rightButton;

navBar.items = @[ navItem ];

[self.view addSubview:navBar];

Надеюсь, это поможет, удачи:)

Добавьте этот код в свой метод viewDidLoad, и все будет построено. Имейте в виду, замените селекторы своими сигналами своего метода -

Счастливое кодирование

Ответ 2

Это определенно возможно.

Вероятно, самый простой способ - вставить UIViewController, который представляет модально в UINavigationViewController, а затем добавляет кнопку Done, делая что-то вроде

UIBarButtonItem * doneButton = [[UIBarButtonItem alloc] 
                            initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
                            target:self 
                            action:@selector(dismiss)];
self.navigationItem.rightBarButtonItem = doneButton;

и реализовать метод dismiss, как следует

- (void)dismiss {
    [self.presentingViewController dismissViewControllerAnimated:YES 
                                   completion:nil];
}

Ответ 3

//add done button to navigation bar
UIBarButtonItem *doneBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(userPressedDone)];
self.navigationItem.rightBarButtonItem = doneBarButtonItem;

Тогда у вас есть такой метод, как это где-то в вашем контроллере просмотра

-(void)userPressedDone {
    // Action For Done Button Tapped
}