如何使可点击的 NSAttributedString 移动到另一个 ViewController Swift
How to make tappable NSAttributedString Move To Another ViewController Swift
我正在开发一个简单的应用程序并以编程方式添加 NSAttributedString
。
我真的很困惑如何将礼物 viewcontroller
移动到另一个 viewcontroller
.
这不是重复问题,因为我的问题是如何移动到视图控制器和重复问题如何打开 link 单击
How can I make a clickable link in an NSAttributedString?。
屏幕截图
在上图中显示了三个 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)
}
有人可以向我解释如何解决这个问题,我已经尝试解决这个问题但还没有结果。
如有任何帮助,我们将不胜感激。
提前致谢。
您有两个选项可以轻松地让事情按照您的要求工作,用户可以使用 UILabel
库或将您的控件更改为 UITextView
。
我找到了很棒的 UILabel 库 class,这一定会对您有所帮助。我用这个做了同样的事情。
UILabel
尝试使用此代码制作 NSMutableAttributedString
,您可以根据需要将其动态化,以将动态字符串值作为参数传递。
将 UItextView
替换为 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
// MARK: UITextView Delegate Method
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
if (URL.absoluteString == "Sham") {
let objVC = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "YourViewController") as! YourViewController
self.navigationController?.pushViewController(objVC, animated: true)
}
return true
}
从情节提要中设置以下 属性。
我正在开发一个简单的应用程序并以编程方式添加 NSAttributedString
。
我真的很困惑如何将礼物 viewcontroller
移动到另一个 viewcontroller
.
这不是重复问题,因为我的问题是如何移动到视图控制器和重复问题如何打开 link 单击 How can I make a clickable link in an NSAttributedString?。
屏幕截图
在上图中显示了三个 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)
}
有人可以向我解释如何解决这个问题,我已经尝试解决这个问题但还没有结果。
如有任何帮助,我们将不胜感激。
提前致谢。
您有两个选项可以轻松地让事情按照您的要求工作,用户可以使用 UILabel
库或将您的控件更改为 UITextView
。
我找到了很棒的 UILabel 库 class,这一定会对您有所帮助。我用这个做了同样的事情。
UILabel
尝试使用此代码制作 NSMutableAttributedString
,您可以根据需要将其动态化,以将动态字符串值作为参数传递。
将 UItextView
替换为 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
// MARK: UITextView Delegate Method
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
if (URL.absoluteString == "Sham") {
let objVC = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "YourViewController") as! YourViewController
self.navigationController?.pushViewController(objVC, animated: true)
}
return true
}
从情节提要中设置以下 属性。