2015-01-14 5 views
2

Как изменить textColorlabel или cell на выбор в iOS Swift?Swift Change textColor on Selection

Я хочу, чтобы фон не менялся. Только textColor и seperatorColor, если таковые имеются. Что-то вроде:

label.highlightedTextColor = UIColor.whiteColor(); 

Я видел, как это происходит в некоторых приложениях, когда цвет меняется. Но я не могу приблизиться к этому. По словам Apple, Dev Ссылки:

подклассов, которые используют метки для реализации типа кнопки текста можно использовать значение этого имущества при рисовании нажатой состояние для кнопки . Этот цвет применяется к метке автоматически, если для свойства установлено значение true.

Но этикетки компилируются в порядке и не меняют цвет на подсветку. Кнопки не имеют highlightedTextColor

+0

Итак, что у вас есть до сих пор? –

+0

@SebastianDressler Я не нашел никаких методов в отношении Dev Docs. – user3581203

+0

'UILabel' не поддерживает выбор, вы можете использовать' UITextField'. Для 'UITableCell' существует, например, [UITableView Cell выбрал цвет?] (Http://stackoverflow.com/questions/1998775/uitableview-cell-selected-color) –

ответ

5

Вы можете установить цвет в didSelectAtIndexPath и didDeselectAtIndexPath и cellForRowAtIndexPath

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.cellForRowAtIndexPath(indexPath)?.textLabel?.textColor = UIColor.blackColor() 
} 

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.cellForRowAtIndexPath(indexPath)?.textLabel?.textColor = UIColor.redColor() 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    // Dequeue cell 
    cell.textLabel?.textColor = UIColor.redColor() 
} 
+0

плюс один для логики, но поскольку я использую панели навигации, текст по-прежнему остается выделенным, когда я возвращаюсь. А также производительность очень плохая. Только подсветка при запуске segue. – user3581203

+0

Что вы имеете в виду только при старте segue? – rakeshbs

+0

@rakeshbs Я думаю, что есть некоторые другие проблемы и недоразумения, о которых мы не знаем. –

4

если вы (использование/не использовать) пользовательскую ячейку (как XIb), вы можете выбрать этикетку, и из утилит перейдите к выделенному и измените цвет на цвет, который вы хотите отобразить при выборе. и это снимок более ясно :) snapshot

4

Я попытался установить его в didSelectAtIndexPath и didDeselectAtIndexPath но цвет становился изменен с задержкой. Мне это не понравилось.

Это, как я в конечном итоге решение проблемы:

Я подклассы мой UITableViewCell и соединили все @IBOutlet с. В awakeFromNib() я просто сделал это:

@IBOutlet weak var myLabel: UILabel! 


override func awakeFromNib() { 
    super.awakeFromNib()   

    self.myLabel.highlightedTextColor = .blackColor() 

} 

теперь работает!

Кстати это мой первый когда-либо ответ на переполнение стека, пожалуйста, приятно мне хехе

(я использую Swift 2.0 и Xcode 7.2.1)

0

В cellForRowAtindexPath вы можете просто добавить эту строку

cell.textLabel?.textColor = UIColor.blackColor()