目标c [self loadView]在屏幕上显示错误

时间:2013-10-18 10:32:29

标签: ios objective-c

在互联网上搜索并查看无数的论坛和教程后,我无法找到解决问题的方法。

问题出在这里:在我的ios应用程序中,我正在加载一个子webView,以便在互联网上查看一些stuf。为了能够回到我的应用程序,我设置了一个后退按钮,当我点击它时,它加载我的RootViewController。但是当我从我的subView加载我的视图控制器时,我有一个空白的乐队,它正在我的barButton标题下面。如果有人已经有这个bug?非常感谢有一些帮助或提示。

以下是我的错误图片:http://s21.postimg.org/4al09vl7r/bug.jpg

以下是代码:

- (void) showBack;
{
  [self loadView];
  [self.navigationItem.leftBarButtonItem setEnabled:NO];
}


- (void) makeRootButton
{
  UIBarButtonItem *rootButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Hub"      style:UIBarButtonItemStyleBordered target:self action:@selector(showBack)];
  self.navigationItem.leftBarButtonItem = rootButtonItem;
  [rootButtonItem release];
}

- (void)showWebView;
{
  UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.frame];
  [self.view addSubview:webView];
  [self makeRootButton];

  NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
  NSString *defaults = [prefs stringForKey:@"myKey"];
  NSString *defaults2 = [prefs stringForKey:@"mySecondKey"];

  NSString *username = defaults;
  NSString *password = defaults2;

  NSURL* url = [NSURL URLWithString:@"http://www.google.com"];

  NSString* body = [NSString stringWithFormat:@"login=%@&password=%@", username,   password];
  NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url   cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:30];
  request.HTTPMethod = @"POST";
  request.HTTPBody = [body dataUsingEncoding:NSStringEncodingConversionAllowLossy];

  [webView loadRequest:request];

}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您应该考虑为Web视图创建一个新的视图控制器,并将该视图控制器推送到您的导航堆栈或呈现它(并添加一些方法来取回)。将Web视图添加为子视图确实有效,但不是那么干净。

您的问题是您不应该自己调用loadView(根本不是,这不是解决问题的正确方法)。您使用addSubview:添加网络视图。与此相反的是removeFromSuperview,您应该使用showBack方法调用网络视图。