gpt4 book ai didi

ios - 来自Objective-C中URL的数组

转载 作者:行者123 更新时间:2023-12-01 18:11:26 25 4
gpt4 key购买 nike

我想解决URL数组的问题。
我在应用程序中使用JSON,并且有一系列单元格。
我的目标:如果单击任何单元格,页面将在Safari中打开,并带有JSON数组中的URL。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier =@"LocationCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: cellIdentifier];
Location *location = [_locations objectAtIndex:indexPath.row];

//...

myCell.userInteractionEnabled = YES;
UITapGestureRecognizer *gestureRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(openUrl:)];
gestureRec.numberOfTouchesRequired = 1;
gestureRec.numberOfTapsRequired = 1;
[myCell addGestureRecognizer:gestureRec];

return cell;
}

- (void) openUrl: (id)sender: (Location *) location {
UIGestureRecognizer *rec = (UIGestureRecognizer *)sender;
id hitLabel = [self.view hitTest:[rec locationInView:self.view] withEvent:UIEventTypeTouches];

if ([hitLabel isKindOfClass:[UILabel class]]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: location.url]];
}
}

发生错误,因为应用程式因这个错误而当机:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController openUrl:]: unrecognized selector sent to instance 0x7fd3a850ad40'

但是,如果我在UITableViewCell中编写此代码:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: location.url]];

应用程序启动后,链接将立即在Safari中打开。因此,我认为JSON解析是正确的。

最佳答案

您已经在ViewController中实现了此方法

- (void) openUrl:(id) sender:(Location *)location

但是你正在分配
@selector(openUrl:)

作为手势识别器的目标。这是另一种方法,因为缺少 sender参数。

也就是说,您不需要手势识别器;只需实现 didSelectRowAtIndexPath:UITableViewDelegate方法:
- (void)tableView:(UITableView)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Location *location = [_locations objectAtIndex:indexPath.row];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: location.url]];
}

(如果您真的希望仅在用户点击标签而不是在单元格的其余部分时打开URL,则您确实需要手势识别器。但是,这是非常糟糕的UX。)

关于ios - 来自Objective-C中URL的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30468879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com