UILabel内的按钮/链接切换到另一个ViewController

时间:2015-02-18 14:19:48

标签: ios facebook swift uibutton uilabel

我想在我的iOS应用中显示一些Facebook帖子。我从Graph API获得了整个帖子作为JSON对象。工作得很好。

因此,如果用户在此帖子中发布新帖子并标记任何页面,那么user-id(或page-id)也包含在该JSON对象中,为我提供文本内部的偏移量和长度,链接到该页面。 (听起来很奇怪,所以让我举个例子):

{
  "id": "135416986571191_709831435796407", 
  "from": {
    "category": "Musician/band", 
    "name": "DANNIC", 
    "id": "135416986571191"
  }, 
  "to": {
    "data": [
      {
        "category": "Musician/band", 
        "name": "Tom & Jame", 
        "id": "423531801036780"
      }, 
      {
        "category": "Record label", 
        "name": "Revealed Recordings", 
        "id": "104563552952573"
      }
    ]
  }, 
  "message": "Wait For You (Tom & Jame Remix) is coming out in 2 days on Revealed Recordings!", 
  "message_tags": {
    "14": [
      {
        "id": "423531801036780", 
        "name": "Tom & Jame", 
        "type": "page", 
        "offset": 14, 
        "length": 10
      }
    ], 
    "59": [
      {
        "id": "104563552952573", 
        "name": "Revealed Recordings", 
        "type": "page", 
        "offset": 59, 
        "length": 19
      }
    ]
  }, 
  "picture": "https://fbcdn-vthumb-a.akamaihd.net/hvthumb-ak-xfa1/v/t15.0-10/10876067_709831642463053_709831435796407_64260_924_b.jpg?oh=49c825ff152d98de125820093b5cff05&oe=5551397E&__gda__=1431085295_7c41923cf64cc0946a39e85b705ee691", 
    ....
    ....

如您所见,有“ message_tags ”,其中包含两个页面ID,名称和偏移量长度。我想用“UIButton”替换“消息”中的文本,或者只是指向该页面的链接。我怎么能这样做?

以下是该帖子在Facebook App中的内容截图:

enter image description here

正如您所看到的,“Tom& Jame”是可点击的,其余的(“显示的录音”除外)是普通文本。如果你点击'汤姆& Jame'它将切换到显示其页面的另一个View Controller。这正是我想要的内容。

我知道我可以为我的标签使用NSAttributedText,并使用NSLinkAttributedName使文本可单击。但我不希望我的应用程序切换到safari并打开Facebook页面,我想留在我的应用程序中,只是切换到另一个UIViewController,显示该页面的信息等。

即使我留在我的应用程序中,我可以将该应用程序的网址方案用于该链接吗?或者我可以在该标签内放置一个UIButton并处理我的视图控制器内的水龙头吗?

什么是最佳解决方案?任何帮助表示赞赏! :)

1 个答案:

答案 0 :(得分:0)

我要做的是将文字放在UITextView中并使用NSAttributedText。我将以稍后可以解析的方式构建URL(足以让UITextView呈现链接,但它不必是facebook上的真实URL。)

然后我会覆盖发送给shouldInteractWithURL代表的UITextView。在这里,我可以重新解析URL,检索数据,并加载我的后续视图控制器。

在这里查看参考资料:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextViewDelegate_Protocol/index.html#//apple_ref/occ/intfm/UITextViewDelegate/textView:shouldInteractWithURL:inRange