xcode добавление кнопок на панель навигации - PullRequest
4 голосов
/ 23 ноября 2011

Я делаю простое приложение для отображения сведений о напитке, и теперь я пытаюсь добавить представление, позволяющее пользователю вводить свой напиток самостоятельно. Я уже создал представление для отображения деталей, и теперь я просто передаю представление в другой контроллер для создания представления добавления напитка. Проблема в том, что, когда я пытаюсь добавить кнопку «отменить» и «сохранить», она не появляется, хотя код соответствует без ошибок. Я приложил код в качестве ссылки.

Это код, который создает новый вид при нажатии кнопки добавления. (Я сделал кнопку добавления, которая работает, и она поднимает панель навигации)

- (IBAction)addButtonPressed:(id)sender {

    AddDrinkViewController *addViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailSecond"];
    UINavigationController *addNavController = [[UINavigationController alloc] initWithRootViewController:addViewController];

    [self presentModalViewController:addNavController animated:YES];



    NSLog(@"Add button pressed!");

Это код из файла реализации addviewcontroller:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save:)];

}

- (IBAction)save:(id)sender {

    NSLog(@"Save Pressed");
    [self dismissModalViewControllerAnimated:YES];

}

- (IBAction)cancel:(id)sender{

    NSLog(@"Cancel Pressed");
    [self dismissModalViewControllerAnimated:YES];
}

Я импортировал заголовок из addview в корневой контроллер, так что я не думаю, что это проблема, кто-нибудь из вас, ребята, видит что-то не так?

Ответы [ 2 ]

1 голос
/ 13 июня 2015

Просто измените строку

[self presentModalViewController:addNavController animated:YES];

до

[self presentViewController:navigationController animated:YES completion:nil];

и увидим магию. Я также проверил код

0 голосов
/ 24 ноября 2011

Мой совет вам - создать шаблон для представления, прежде чем запускать какой-либо код в файле XIB вашего приложения. Вместо того, чтобы пытаться установить каждую кнопку после выделения совершенно нового представления, установка нового в XIB предварительно позволяет связать каждый элемент с приложением и убедиться, что он выглядит прямо перед отладкой.

Просто зайдите в ваш "[Your-App-Name] viewController.xib" и перетащите вид из библиотеки объектов на панель слева. Отсюда добавьте каждый из ваших элементов и разместите их там, где вы хотите на виде. Теперь в файле «[Your-App-Name] viewController.h» добавьте IBOutlets для каждого элемента, который нужно изменить, и добавьте IBActions для каждой из кнопок. Также создайте IBOutlet для нового представления.

IBOutlet UIView* addDrinkView;

Вернувшись в файл XIB, используйте владельца файла, чтобы связать каждый выход с каждым элементом и каждый метод с каждой кнопкой. Убедитесь, что вы связываете IBOutlet

Теперь в вашем файле «[Your-App-Name] viewController.m» вы можете определить каждый метод кнопки, и все, что вам нужно сделать для доступа к новому представлению и закрыть его, это:

-(IBAction)openAddView
{
     [self setView:addDrinkView];
}
-(IBAction)saveButtonPressed
{
     [self setView:view];
     //save code goes here
}
-(IBAction)cancelButtonPressed
{
     [self setView:view];
     //cancel code goes here
}

Это должно быть намного проще, чем пытаться расположить все в коде.

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

...