Как добавить значок информации на панель навигации и реализовать метод showInfoView? - PullRequest
0 голосов
/ 01 февраля 2011

Я пытаюсь добавить информационную кнопку в верхней части панели навигации. Кнопка информации направляет пользователя к представлению информации. Следующий код добавляет информационную кнопку iPhone по умолчанию на панель навигации. Он находится внутри функции viewDidLoad в RootViewController.m.

UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
    [infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];

Теперь необходимо реализовать метод showInfoView и использовать следующий код:

- (IBAction)showInfoView:(id)sender {

// Create the root view controller for the navigation controller
// The new view controller configures a Cancel and Done button for the
// navigation bar.
InfoViewController *addController = [[InfoViewController alloc]
                                          initWithNibName:@"InfoView" bundle:nil];

// Configure the RecipeAddViewController. In this case, it reports any
// changes to a custom delegate object.
addController.delegate = self;

// Create the navigation controller and present it modally.

UINavigationController *navigationController = [[UINavigationController alloc]
                                                initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];

// The navigation controller is now owned by the current view controller
// and the root view controller is owned by the navigation controller,
// so both objects should be released to prevent over-retention.
[navigationController release];

[addController release];    

}

Но когда программа собирается и запускается, нажатие кнопки «Информация» приводит к сбою программы.

Кто-нибудь сталкивался с этой проблемой раньше? Я много искал и не видел ни одного тела с проблемами при реализации метода showInfoView.

1 Ответ

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

Используйте этот код:

UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = infoButton;

Метод showInfoView: должен работать нормально при условии, что имя файла пера "InfoView.xib", а не "InfoViewController.xib"

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