UIWebView from UITableview from TabBarController not loading



试图在tabviewcontroller序列中加载从前一个视图控制器传递的url。检查了常见的嫌疑人。UIWebview添加了视图出口。所有合适的委托都被连接起来。我不确定如果NSURL被传递到下一个视图控制器,因为我得到一个黑屏(虽然响应对象不是nil)。这快把我逼疯了,因为这是一个简单的问题,我已经做过无数次了,但就是行不通。任何帮助都会很感激。

下面是代码。

SquirrelInformationTableViewController.m

@interface ASAInformationTabViewController (){
    NSMutableArray *squirrelArray;
}
@property (nonatomic, strong) ODRefreshControl *refreshControl;
@property (weak, nonatomic) IBOutlet UITableView *squirrelListTableView;
@end
@implementation ASAInformationTabViewController
- (void)viewDidLoad {
    [super viewDidLoad];

    [self setUpSquirrelList];
    //Add drag to refresh function
    self.refreshControl = [[ODRefreshControl alloc]initInScrollView:self.squirrelListTableView];
    self.refreshControl.tintColor = [UIColor colorWithRed:46.0/255 green:172.0/255 blue:247.0/255 alpha:1];
    [self.refreshControl addTarget:self action:@selector(dragToRefreshAction:) forControlEvents:UIControlEventValueChanged];
}

-(void)setUpSquirrelList
{
    __weak UITableView* weaktable = self.squirrelListTableView;
    [[ASASquirrelManager instance] listSquirrels:^(NSString *response, NSMutableArray *result) {

        if ([response isEqualToString:CODE_SUCCESS]) {
            squirrelArray = result;
            dispatch_async(dispatch_get_main_queue(), ^{
                if (weaktable) {
                    [weaktable reloadData];
                }
            });
    }
    }];
}

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
        ASASquirrelInformationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"squirrelIdentifier"];
        ASASquirrelModel *squirrelLocal = squirrelArray[indexPath.row];
        cell.squirrelTitleLabel.text = squirrelLocal.title;
        cell.squirrelDescLabel.text = squirrelLocal.desc;
        NSData *imageData = [[NSData alloc] initWithContentsOfURL:
                         [NSURL URLWithString:squirrelLocal.image]];
        cell.squirrelImage.image = [UIImage imageWithData:imageData];

        return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    ASASquirrelModel *squirrelWebLocal = squirrelArray[indexPath.row];
    NSString *squirrelURLString = squirrelWebLocal.url;
    //create an array with the string you want an access it
    NSLog(@"%@", urlStringArray);
    //Create a string from the URL pass it to the sdvc.string
    SquirrelDetailViewController *sdvc = [SquirrelDetailViewController new];
    sdvc.urlString = squirrelURLString;
    [self.navigationController pushViewController:sdvc animated:YES];
}

SquirrelDetailViewController.m

@interface SquirrelDetailViewController () <UIWebViewDelegate> 
@end
@implementation SquirrelDetailViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.webView.frame = self.view.bounds;
    [self.view addSubview:self.webView];
}
-(void)viewWillAppear:(BOOL)animated
{
    self.urlstr = [NSURL URLWithString:self.urlString];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:self.urlstr];
    [self.webView loadRequest:requestObj];
}

我认为你需要使用故事板创建sdvc的实例,否则它将无法正确实例化。所以:

SquirrelDetailViewController *sdvc = 
  (SquirrelDetailViewController *)[[UIStoryboard storyboardWithName:@"XXX" bundle:nil] instantiateViewControllerWithIdentifier:@"YYY"];

其中XXX是你的故事板名称,YYY是SquirrelDetailViewController的故事板标识符

我发现问题是我没有为segue做准备。(点击额头*)

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier:@"webviewpush" sender:self];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"webviewpush"]) {
        // Get destination view
        SquirrelDetailViewController *vc = [segue destinationViewController];
        NSIndexPath *path = [self.squirrelListTableView indexPathForSelectedRow];
        ASASquirrelModel *squirrelWebLocal = squirrelArray[path.row];
        NSString *squirrelURLString = squirrelWebLocal.url;
        vc.urlString = squirrelURLString;
    }
}
如果你不介意的话,我现在要去淹死我自己了。

最新更新