2016-09-08 4 views
0

Я пытаюсь иметь ячейки таблицы уведомлений, которые будут иметь метки в строках «User1 подружился с User2», где User1 & User2 - это кнопки, которые открывают вид профиля этого пользователя. Проблема возникает, когда текст обтекает. Пример:Как смешивать в UIButton в тексте UILabel?

   WANT        DON'T WANT 
|          | |       | 
| "John Doe" became friends with "Jane | | "John" friends with "Jane"| 
| Smith"        | |      "Doe "| 
^notice how to wraps around    wraps within btn bounds^ 
    all the way back to left margin     

Я довольно много хочу Swift эквивалент этой HTML: <a href=..>Button 1</a> some plain text <a href=..>Button 2</a>. Есть ли способ, которым я мог бы это сделать?

+0

Я рекомендовал бы достичь этой функции с помощью «ПРИСВОЕНА Text», и добавление крана жест распознаватель к приписываемой тексту, который открывается профиль отводами пользователя. –

ответ

0

Вы можете добиться этого, используя UITextView. UITextView Обнаруживает URL-адреса, и вы можете использовать эту функцию следующим образом.

Вы можете добавить фиктивные значения url для этих значений clickable, а затем значения станут кликабельными в uitextview. Вот пример кода: -

import UIKit 

class ViewController: UIViewController, UITextViewDelegate { 

    @IBOutlet weak var label: UILabel! 
    @IBOutlet weak var textView: UITextView! 

    let user01 = "http://www.dummyLinks"; 
    let user02 = "http://www.dummy.com/privacy"; 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.textView.delegate = self 
     let labelText = "Chathuranga Silva is now Freind with Jason" 
     let string = NSMutableAttributedString(string: labelText) 
     var textRange = string.mutableString.rangeOfString("Chathuranga Silva") 
     string.addAttribute(NSLinkAttributeName, value: user01, range: textRange) 
     textRange = string.mutableString.rangeOfString("Jason") 
     string.addAttribute(NSLinkAttributeName, value: user02, range: textRange) 
     textView.attributedText = string 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool { 
     if (URL.absoluteString == user01) { 
      print("Selected user01") 
     } else if (URL.absoluteString == user02) { 
      print("Selected user02") 
     } 
     return false 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

enter image description here

+0

А я вижу, я был немного генералом в своем объяснении, но вместо фактической ссылки на сайт я хотел бы, чтобы кнопка переходила к другому контроллеру представления. Подобно '* user1 * отправился в * парк *, где' user1' открывает контроллер профиля, а 'the park' открывает другой контроллер вида. Есть ли способ использовать addAttribute для достижения этого? –

+0

Просто используйте segues, где я использовал печать –

+0

Кстати, вам не нужно указывать фактическую ссылку на веб-страницу, которую она представляет собой манекен, просто укажите URL-адрес, чтобы сделать слово метки нажата –

Смежные вопросы