如何使可点击的NSAttributedString移动到另一个ViewController Swift

时间:2019-02-18 07:14:14

标签: ios swift uiviewcontroller nsattributedstring nsattributedstringkey

我正在开发一个简单的应用,并以编程方式添加NSAttributedString。 我真的很困惑如何将当前的viewcontroller移到另一个viewcontroller

这不是重复的问题,因为我的问题是如何移动至查看控制器,而重复的问题是如何在点击时打开链接  How can I make a clickable link in an NSAttributedString?

屏幕截图

Screen Shot

在上图中显示了三个NSAttributedString,第一个是dhiman.sham1gmail.com,第二个是has started following,第三个是Sham。尝试单击Sham时,不执行任何操作。我想在单击Sham时将此控制器移至另一个控制器。

这是我的代码:

@IBOutlet weak var descriptionLbl: UILabel!

override func updateWithModel(_ model: AnyObject) {
 self.descriptionLbl.attributedText = self.followingGetTextFromType(data: (model as? FollowingNotificationData)!)
}

func followingGetTextFromType(data:FollowingNotificationData) -> NSMutableAttributedString{
  var attributedString = NSMutableAttributedString()
  attributedString = NSMutableAttributedString(string:(data.detailsNoti?.fullName)!, attributes: strres)
  let startedfollowing = NSMutableAttributedString(string:" has started following ", attributes: attrs)
  attributedString.append(startedfollowing)
  var discription = NSMutableAttributedString()
  if data.fullName == ""{
  discription = NSMutableAttributedString(string:"\((data.userName)!)", attributes: strres)
  }else{
  discription = NSMutableAttributedString(string:"\((data.fullName)!)", attributes: strres)
  }
  attributedString.append(discription)
}

有人可以向我解释如何解决此问题,我已经尝试解决此问题,但没有结果。

任何帮助将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:2)

尝试使用此代码制作NSMutableAttributedString,您可以根据需要将其设置为动态,以将动态字符串值作为参数传递。

放入UItextView的{​​{1}}

UIlabel

使用此@IBOutlet weak var descriptionLbl: UITextView! descriptionLbl.attributedText = prepareAttributedTextString() func prepareAttributedTextString() -> NSMutableAttributedString { let masterString = "dhiman@gmail.com has started following Sham" let formattedString = NSMutableAttributedString(string: masterString) let ShamUseAttribute = [ NSAttributedStringKey.underlineStyle: NSUnderlineStyle.styleSingle.rawValue, NSAttributedStringKey.font: UIFont.systemFont(ofSize: 16.0), NSAttributedStringKey.link: URL(string: "Sham")!, ] as [NSAttributedStringKey : Any] let ShamRange = (masterString as NSString).range(of: "Sham") formattedString.addAttributes(ShamUseAttribute, range: ShamRange) return formattedString } 来检测对UITextViewDelegate的点击并预测到指定的UItextView

UIviewController

从情节提要中设置以下属性。

enter image description here

答案 1 :(得分:0)

您可以通过两种选择轻松地使事情按您的要求工作:UILabel库下面的用户,或将控件更改为UITextView

我为UILabel类找到了不错的库,这一定会对您有所帮助。我通过使用它来做同样的事情。

  1. UILabel

    [TTTAttributedLabel]