Добавление правильной кнопки «Готово» (UIBarButtonItem) в UINavigationController - PullRequest
6 голосов
/ 20 апреля 2011

Я вижу, что подобный вопрос был задан здесь: Как добавить правую кнопку в UINavigationController? (среди прочих), но это не совсем то, что я ищу, и они не решают мою проблему .

По сути, я создал UIViewController с именем WebViewViewController с UIWebView на нем, который будет показан с использованием presentModalViewController. По сути, это мини-веб-браузер для отображения веб-страницы с сохранением пользователя в приложении, а не с запуском Safari.

ViewController делает следующее, чтобы показать его ... и кнопка "готово" предназначена для предоставления места для закрытия браузера.

-(IBAction)visitFacebook {
    WebViewViewController *rootController = [[WebViewViewController alloc] init];
    rootController.webURL = @"http://www.facebook.com/";
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc ] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(done:)];

    [navigationController.navigationItem setRightBarButtonItem:doneButton animated:YES];
    [navigationController.navigationItem setTitle:@"Facebook"];

    if (rootController) {
        [self presentModalViewController:navigationController animated:YES];
    }

    [doneButton release];
    [rootController release];
}

К сожалению, кнопка "Готово" не показывает ... какие-либо идеи, где я не так?

Ответы [ 3 ]

10 голосов
/ 20 апреля 2011

Попробуйте с ниже

-(IBAction)visitFacebook{
WebViewViewController *rootController = [[WebViewViewController alloc] init];
rootController.webURL = @"http://www.facebook.com/";
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc ] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(done:)];

 rootController.navigationItem.rightBarButtonItem = anotherButton;

[navigationController.navigationItem setTitle:@"Facebook"];

if (rootController) {
    [self presentModalViewController:navigationController animated:YES];
}

[doneButton release];
[rootController release];

}
6 голосов
/ 20 апреля 2011

Возможно, вы ищете что-то похожее на это:

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
                                      style:UIBarButtonItemStyleDone target:self 
                                     action:@selector(dismissModalViewControllerAnimated:)];
5 голосов
/ 24 сентября 2013
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Done"
        style:UIBarButtonItemStylePlain target:self action:@selector(done:)];

Только эта кнопка с кодом, отображаемым в одной строке, для меня.

...