我是Objective-C的新手。我有一个表格视图,其中包含网址列表。当用户单击表视图中的单元格时,它们被引导到第二个视图控制器,其中Web视图显示该网站。但是,当我运行应用程序时,Web视图显示为空白。我认为didSelectRowAtIndexPath是问题所在。那么如何将url传递给第二个视图控制器呢?
ListTableViewController.m
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
FeaturedWebViewController *vc = [[FeaturedWebViewController alloc] init];
vc.url = cell.textLabel.text;
[self.navigationController pushViewController:vc animated:YES];
}
FeaturedWebViewController.m
NSURL *URL = [NSURL URLWithString: [self.url stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
[self.webView loadRequest:request];
答案 0 :(得分:0)
也许你的cell.textLabel.text是零,就像一小时前WMios所说的那样。
您应该更好地获取弹出tableview的原始数据数组。单元格内容在已经显示时刷新。因此,当所有单元格都已被重用时,您无法获得当前显示的cell.textlabel.text;
所以,如果你使用coredata或popluated mutable array(=下面的listOfItem),那就是这样的:
YourCoreDataSet *yourDataRow = [listOfItem objectAtIndex:indexPath.row];
FeaturedWebViewController *vc = [[FeaturedWebViewController alloc] init];
vc.url = yourDataRow.yourDataFieldHere;
//我建议你像这样检查NSLog:
NSLog(@"sending value: %@, received value: %@", yourDataRow.yourDataFieldHere, vc.url);
答案 1 :(得分:0)
一些断点应该可以解决这个问题,但假设textLabel.text具有正确的url值并且它是一个有效的url(不包含空格),则问题很可能是你的[self.webView loadRequest:request]正在运行在FeaturedWebViewController上设置url属性之前。
尽管有所有猜测,但没有更多信息。如果您在[NSURLRequest requestWithURL:URL]中创建非零NSURL对象,请使用调试器并确定。
答案 2 :(得分:0)
第1步: - 在FirstVC,.m文件中记下此代码。
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return mutArryAllUrl.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath];
cell.lblUrl.text = mutArryAllUrl[indexPath.row];
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
SecondVC *aSecondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondVC"];
//Here create one NSString Property in SecondVC, name is 'strURL' for getting URL.
SecondVC.strURL = mutArryAllUrl[indexPath.row];
[self.navigationController pushViewController:aSecondVC withDefinedAnimated:YES];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
第2步: - 在SecondVC,.h文件中记下此代码
@property (strong, nonatomic) IBOutlet NSString *strURL;
@property (weak, nonatomic) IBOutlet UIWebView *webView;
第3步: - 在SecondVC,.m文件中记下此代码。 URL存储在_strURL属性中,并在Web视图中加载URL。
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:_strURL];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[_webView loadRequest:urlRequest];
}