2016-07-04 4 views
1

В настоящее время я получаю этот результат с помощью ButtonRow, добавив вид метки в ячейке:Swift Eureka: Добавление текста значение ButtonRow

enter image description here

<<< ButtonRow("Email") { 
      $0.title = $0.tag 
      $0.presentationMode = PresentationMode.Show(...) 
      }.cellSetup { 
       cell, row in 

       let text = UILabel(frame: cell.frame) 
       text.frame.size.width = 0.909 * currentScreenWidth - 68 
       text.frame.origin.x = 68 
       text.textColor = UIColor(red: 142/255, green: 142/255, blue: 147/255, alpha: 1) 
       text.textAlignment = .Right 
       text.text = "[email protected]" 
       cell.addSubview(text) 
} 

Я использую ButtonRow, потому что он имеет что немного ">" в конце, и он отлично работает при программном программировании нового представления и просмотра.

Использование $0.value = "Some String" не работает, как и для других объектов.

Есть ли способ сделать это без необходимости вручную добавлять надпись на этикетку? Он работает на всех экранах, но, тем не менее, я не думаю, что это очень безопасно вручную установить эти параметры.

ответ

1

Реализация ButtonRow при инициализации объекта ячейки использует UITableViewCellStyle 'default'. Вы можете создать подкласс ButtonRow:

public final class DetailedButtonRowOf<T: Equatable> : _ButtonRowOf<T>, RowType { 
    public required init(tag: String?) { 
     super.init(tag: tag) 
     cellStyle = .value1 
    } 
} 
public typealias DetailedButtonRow = DetailedButtonRowOf<String> 

Затем вы можете указать detailLabelText из ряда:

<<< DetailedButtonRow("Email") { row in 
    row.title = row.tag 
    row.presentationMode = .segueName(segueName: "AStoryboardSegue", onDismiss: nil) 
}.cellUpdate({ (cell, row) in 
    cell.detailTextLabel?.text = "[email protected]" 
}) 
Смежные вопросы