【发布时间】:2015-11-25 16:19:33
【问题描述】:
试图加载一个从前一个视图控制器传递过来的 url,在一个 tabviewcontroller 序列中。检查了通常的嫌疑人。 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];
}
【问题讨论】:
-
在
viewDidLoad的视图中添加任何需要有关视图大小信息的内容时要小心,因为这里的信息不准确。 -
确实如此。我也意识到了这一点,并删除了 viewdDidLoad 尺寸规格。
-
self.webView 是在哪里创建的?你说它是一个出口,那么为什么需要将它添加为子视图?它是否应该不在故事板的视图层次结构中或您创建设计的任何位置?
-
是的,我意识到这个错误并删除了self.webview addsubview。它已作为插座连接。
标签: ios objective-c iphone uitableview uiwebview