2015-01-27 3 views
0

Для моего приложения у меня есть UIToolBar, который появляется над UIWebView. То, что я пытаюсь сделать, - удалить панель инструментов и веб-представление из супервизора при нажатии UIBarButtonItem в панели инструментов.Виды не удаляются из Superview при вызове метода Selector

Я сделал инструмент-бар и веб-просмотра свойств моего ViewController так:

@property (nonatomic, weak) UIToolbar *toolBar; 
@property (nonatomic, weak) UIWebView *webView; 

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

// Remove the toolbar and the webview 
- (void)hideToolbarAndWebView 
{ 
    [_toolBar removeFromSuperview]; 
    [_webView removeFromSuperview]; 
    NSLog(@"Button clicked"); 
} 

Ниже я сначала создаю элемент с бара-кнопками и назначаю действие как метод hideToolbarAndWebView:

// Create a bar button and add it to the toolbar. Action is to dismiss the tool-bar and thew web-view. 
UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStylePlain target:self action:@selector(hideToolbarAndWebView)]; 

Я знаю, что бар-кнопка успешно вызывает метод hideToolbarAndWebView посредством ведения журнала, но представления не удаляются из супервизора. Как это исправить?

EDIT Ниже приведен код, в котором создана панель инструментов. Он находится внутри метода, называемого showToolbar, который вызывается из AppDelegate.

// Create a toolbar 
UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:self.view.bounds]; 
toolBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
// Default height is 44 points, but seems to close to the status bar 
toolBar.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.bounds),64); 
toolBar.barStyle = UIBarStyleBlackTranslucent; 
[self.view addSubview:toolBar]; 

Ниже приведен код, который создает веб-вид и вызывает выше showToolbar метод:

// Create a web view that displays the update info, and save settings for current version 
    SWWebViewController *webViewController = [[SWWebViewController alloc] init]; 
    NSString *[email protected]"http://google.com"; 
    webViewController.URL = url; 
    webViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self.navigationController presentViewController:webViewController animated:YES completion:nil]; 

    [webViewController showToolbar]; 
+1

'toolBar' и' webView' будет nil –

+0

Вы правы @MidhunMP; Я просто проверял значение представлений с помощью NSLog. – narner

+0

Как вы добавили их в свой интерфейс по коду? Если да, можете ли вы показать этот код? –

ответ

0

Благодаря @Midhun MP, я понял, что я делаю неправильно. Вместо того, чтобы пытаться использовать свойства, мне нужно, чтобы установить toolBar и webView быть глобальными переменными:

UIToolbar *toolBar; 
UIWebView *webView; 

И вместо того, чтобы создавать toolBar и webView вот так:

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:self.view.bounds]; 
SWWebViewController *webViewController = [[SWWebViewController alloc] init]; 

Поскольку переменные теперь созданы, Я теперь только нужно назначить их следующим образом:

toolBar = [[UIToolbar alloc] initWithFrame:self.view.bounds]; 
webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 

Тогда, когда я назвал hideToolbarAndWebView, toolBar и webView были удалены из супервизора.