2015-06-14 16 views
1

Мой следующий код находится в Swift.Нажмите на ключевое слово в UILabel

Подводя итог, у меня есть UITableView с твитами, каждая строка - твит. я могу знать, где находятся Хештеги с этим царем код:

for hashtag in tweet.hashtags { 
    attributedText.setAttributes(hashtagAttrs, range: hashtag.nsrange) 
} 

Но это полезно, если я хочу, чтобы выделить эти ключевые слова (Hashtags)

Чтобы поместить текст твита в моем Label, Я пишу:

@IBOutlet weak var tweetTextLabel: UILabel! 
tweetTextLabel?.text = tweet.text 

Так что теперь у меня есть это Tableview Screenshot of my tableView

То, что я хочу, чтобы иметь возможность нажать на хэштегом и исследования сек с информацией об этом новом хэштеге. Что я прошу: Как я могу щелкнуть по своему хэштегу прямо на моем ярлыке?

Большое вам спасибо!

[обновление]

мне удалось получить доступ к моему хэштегом с UITextView вместо UILabel, с этим кодом:

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {  
    let tweetTableView = TweetTableViewController() 
    tweetTableView.searchText = URL.absoluteString 
    return true 
} 

Но сейчас проблема в том, что я не могу перезарядить мои данные в мой tableView. У меня есть мои новые твиты в моей переменной твита, но моя ячейка не обновляется. Эта функция tableView никогда не вызывается!

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier(Storyboard.CellReuseIdentifier, forIndexPath: indexPath) as! TweetTableViewCell 
    cell.tweet = tweets[indexPath.section][indexPath.row] 
    return cell 
} 

Я уже пытался

tableView.delegate = self 

Я использую эту функцию, чтобы освежить мою Tableview, но self.tableView.reloadData() ничего не делать ...

@IBAction func refresh(sender: UIRefreshControl?) { 
    if searchText != nil { 
     if let request = nextRequestToAttempt { 
      request.fetchTweets { (newTweets) -> Void in 
       dispatch_async(dispatch_get_main_queue()) {() -> Void in 
        if newTweets.count > 0 { 
         self.lastSuccessfulRequest = request 
         self.tweets.insert(newTweets, atIndex: 0) 
         self.tableView.reloadData() 
        } 
        sender?.endRefreshing() 
       } 
      } 
     } 
    } else { 
     sender?.endRefreshing() 
    } 
} 

СОВЕТ:

Возможно, это потому, что я использую другой экземпляр моего c девушка здесь? Должен ли я вызвать родительский tableView моего tableViewCell? Как ?

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {  
    let tweetTableView = TweetTableViewController() 
    tweetTableView.searchText = URL.absoluteString 
    return true 
} 

[UPDATE & CLOSE]

я, наконец, добиться успеха с делегатом: Проблема заключалась в том, я использовал другой экземпляр моей tableViewController.

// TableViewCell 
protocol TweetTableViewCellDelegate { // my delegate 
    func updateTweetHashTag(TweetTableViewCell) 
} 

// TableViewController 
func updateTweetHashTag(cell: TweetTableViewCell){ 
    let newHashTag = cell.newHashTagInCell 
    searchText = newHashTag 
} 
+0

Можете ли вы разместить свой проект на GitHub? – Bannings

+0

Наконец-то я с делегатом! Это не сработало, потому что у меня был другой экземпляр моего TableViewController. Вот мой код, если вы хотите увидеть: https://github.com/papay0/INSATwitter – papay0

ответ

0

Я не думаю, что UILabels поддерживает интерактивные URL-адреса. Вам нужно будет использовать UITextViews для этого и реализовать соответствующие методы делегатов.