调用Selector方法时,不会从Superview中删除视图

时间:2015-01-27 20:56:17

标签: ios objective-c selector uibarbuttonitem uitoolbar

对于我的应用程序,我有一个出现在UIWebView上方的UIToolBar。当我点击工具栏中的UIBarButtonItem时,我尝试做的是从superview中删除工具栏和Web视图。

我已经制作了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)];

我知道bar按钮通过日志记录成功调用了hideToolbarAndWebView方法,但是没有从superview中删除视图。我该如何解决?

编辑以下是创建工具栏的代码。它位于从AppDelegate调用的名为showToolbar的方法中。

// 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 *url=@"http://google.com";
    webViewController.URL = url;
    webViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self.navigationController presentViewController:webViewController animated:YES completion:nil];

    [webViewController showToolbar];

1 个答案:

答案 0 :(得分:0)

感谢@Midhun MP,我意识到我做错了什么。我没有尝试使用属性,而是将toolBarwebView设置为全局变量:

UIToolbar *toolBar;
UIWebView *webView;

而不是像这样创建toolBarwebView

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时,toolBarwebView都从超级视图中移除。