Xcode UIWebView未加载

Xcode UIWebView未加载,xcode,ios5,uiwebview,tableview,Xcode,Ios5,Uiwebview,Tableview,我知道这是一个如此简单的问题,但我一直在努力解决它,它就是不起作用。我正在尝试获取UITableView,以便在选择特定行时打开URL。使用NSLog,我可以看到urlSelected变量被正确设置,并被正确地传递给UrlViewController,但它只是没有显示webview。它仅显示带有黑屏的导航菜单。如果在两个视图控制器之间添加推送关系,则ViewController将正确加载,但它无法将urlSelected变量传递给UrlViewController。传递此变量的正确方法是什么,或

我知道这是一个如此简单的问题,但我一直在努力解决它,它就是不起作用。我正在尝试获取UITableView,以便在选择特定行时打开URL。使用NSLog,我可以看到urlSelected变量被正确设置,并被正确地传递给UrlViewController,但它只是没有显示webview。它仅显示带有黑屏的导航菜单。如果在两个视图控制器之间添加推送关系,则ViewController将正确加载,但它无法将urlSelected变量传递给UrlViewController。传递此变量的正确方法是什么,或者是否需要在两个ViewController之间设置不同的关系?以下是我目前的情况:

RootViewController.m:

    #import "RootViewController.h"
    #import "UrlViewController.h"
    ..........
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath         *)indexPath
    {

        UrlViewController *webController = [[UrlViewController alloc] init];


        if(indexPath.row == 0){
            webController.urlAddress = @"http://www.yahoo.com";
            NSLog(@"urlAddress being passed is:%@", webController.urlAddress);
            [self.navigationController pushViewController:webController animated:YES];

        }else if(indexPath.row == 1){
            webController.urlAddress = @"http://www.google.com";
            NSLog(@"urlAddress being passed is:%@", webController.urlAddress);
            [self.navigationController pushViewController:webController animated:YES];


        }else{
            webController.urlAddress = @"http://www.abc.com";
            NSLog(@"urlAddress being passed is:%@", webController.urlAddress);
            [self.navigationController pushViewController:webController animated:YES];

        }    

    }
UrlViewController.h:

      @interface UrlViewController : UIViewController{
          NSString *urlAddress;
      }
      @property (strong) IBOutlet UIWebView *webView;
      @property (nonatomic, retain) NSString *urlAddress;
UrlViewController.m:

      @implementation UrlViewController
      @synthesize webView;
      @synthesize urlAddress;
      ...........
     - (void)viewWillAppear:(BOOL)animated {
        NSURL *url = [NSURL URLWithString:urlAddress];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
        [self.webView loadRequest:requestObj];
        NSLog(@"The value being receieved is:%@", urlAddress);
    }

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
    }
我从NSLogs收到以下输出:

    2012-03-28 09:53:30.266 BeloitTurner[4278:f803] urlAddress being passed is:http://www.yahoo.com
    2012-03-28 09:53:30.269 BeloitTurner[4278:f803] The value being receieved is:http://www.yahoo.com

非常感谢您的帮助。

听起来您正在使用一个故事板,其中包含RootViewController和UrlViewController的视图。如果是这种情况,则需要使用故事板实例化UrlViewController:

UrlViewController* webController = [self.storyboard instantiateViewControllerWithIdentifier:@"UrlViewController"];
使用此方法,而不是在tableView:didSelectRowatineXpath:method中分配初始化webController的方式。此外,在包含这两个视图控制器的视图的情节提要中,将Interface Builder中属性检查器的视图控制器部分下的标识符字段设置为字符串UrlViewController。这样做而不只是alloc init的原因是描述UrlViewController视图的文件在情节提要中,因此alloc initing UrlViewController意味着它将找不到其关联的视图,只显示一个黑屏

您也可以通过推送关系来实现这一点。不使用tableView:didSelectRowAtIndexPath:method,只需设置从RootViewController中的单元格到UrlViewController的推送关系(segue)。在RootViewController.m文件中,添加以下方法:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"PassUrlToUrlViewControllerSegue"]) {
        segue.destinationViewController.urlAddress = @"http://www.yahoo.com";
    }
}
这需要您设置推送序列的标识符才能工作。选择序列图像板中表示推送序列的箭头,并将其标识符设置为字符串PassUrlToUrlViewControllerSegue


您可以通过使用prepareForSegue:sender:中提供给您的sender参数来确定选择了哪个单元格,从而确定要传递哪个url,从而实现此动态。

这就做到了,这正是我要寻找的。非常感谢你的帮助,我已经回答了!同样的问题很简单。