如何在swift

时间:2015-07-27 05:11:59

标签: ios swift uitableview ios7

我有一个自定义的uitableviewcell,它有一个标签,我正在检测标签文本中的任何链接,如果存在,那么我会突出显示它。但问题是我想让链接可点击。但是当我点击链接时,会调用didSelectRowAtIndexPath并加载另一个页面。

我想要实现的是当我点击链接时(仅在链接上而不在单元格上),相应的网页必须打开而不是调用didSelectRowAtIndexPath。我搜索并找到了一些第三方库。但我的问题是,它可以在不使用第三方库的情况下实现吗?如果是这样,怎么办呢。

以下是我用来突出显示链接的代码

labelText.addAttribute(NSLinkAttributeName, value: "http://linktosite" , range: urlRange)

希望你能理解这个问题

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以在iOS的didSelectRowAtIndexPath委托方法中编写条件,好像UILabel包含链接,然后打开网址或其他部分。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    DetailViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if(cell.labelText.text == @"Link")
{
      //Open in safari
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:cell.labelText.text]];
}
else
{

}
}

或者您可以添加点击手势到标签&将URL打开为

cell.labelText.userInteractionEnabled = YES;

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

并实施行动方法

- (void)openUrl:(id)sender
{
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:((UILabel *)hitLabel).text]];
}
}