Невозможно добавить правый или левый элемент панели кнопок в мой навигационный контроллер - PullRequest
1 голос
/ 04 октября 2011

Перепробовал все примеры на этом сайте. Я просто не вижу ничего в моем модальном представлении, хотя я вижу панель навигации, но она пуста

EditEntityViewController *editEntityViewController = [[EditEntityViewController alloc] init];
editEntityViewController.currentNode = newNode;
editEntityViewController.delegate = self;

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:editEntityViewController];
navController.modalPresentationStyle = UIModalPresentationFormSheet;
navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;


UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show"
                                                                  style:UIBarButtonItemStylePlain 
                                                                 target:self
                                                                 action:@selector(refreshPropertyList:)];          
editEntityViewController.navigationItem.rightBarButtonItem = anotherButton;
[anotherButton release];


[self presentModalViewController:navController animated:YES];

[editEntityViewController release];

Ответы [ 4 ]

0 голосов
/ 04 октября 2011

Как уже говорилось, ваш код был верным и является стандартным способом отображения всплывающего листа с UINavigationBar для удержания кнопок для закрытия листа.Однако вы определили IBOutlet в EditViewController с именем navigationItem, который вызывал конфликт.

0 голосов
/ 04 октября 2011

Попробуйте установить rightBarButtonItem для editEntityViewController до . Создайте UINavigationController с initWithRootViewController:.

Я думаю, что панель навигации устанавливается при создании UINavigationController.Добавление элемента правой панели после того, как время создания было слишком поздним.

РЕДАКТИРОВАТЬ: Хорошо, это не проблема.

Следующий минимальный фрагмент кода работает, поэтому я проверю, что ваш EditEntityViewController что-то делаетчтобы удалить кнопку в другом месте:

- (IBAction)showPopup:(id)sender
{
    UIViewController *popupController = [[UIViewController alloc] init];

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:popupController];
    navController.modalPresentationStyle = UIModalPresentationFormSheet;
    navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;


    UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show"
                                                                      style:UIBarButtonItemStylePlain 
                                                                     target:self
                                                                     action:nil];       

    popupController.navigationItem.rightBarButtonItem = anotherButton;
    [anotherButton release];

    [self presentModalViewController:navController animated:YES];

    [popupController release];
}
0 голосов
/ 04 октября 2011

Причина, по которой это не сработало, действительно глупа. По сути, в EditViewController был определен IBOutlet с именем navigationItem, который конфликтовал со свойством SDK с тем же именем.

Я удалил его и ссылку из пера, и, как говорит Робин, он работает отлично.

0 голосов
/ 04 октября 2011

Модульно представленные контроллеры представления на контроллерах навигации не имеют ни навигационных элементов, ни навигационных контроллеров. Однако они имеют свойство parentViewController, но в вашем случае это не имеет значения.

Если вы хотите настроить панель навигации в вашем модально представленном представлении, вам следует подключить IBOutlet от контроллера представления, управляющего этим представлением, к панели навигации, расположенной в этом управляемом представлении. Затем выполните манипуляции с помощью IBOutlet переменной экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...