2016-12-02 2 views
1

Я пытаюсь настроить фон контроллера, представленный MultipleSelectorRow, но я не могу.Настройка MultipleSelectorRow

<<< MultipleSelectorRow<String>("select") { row in 
    row.options = values 
    row.onPresentCallback = { _, to in 
    let backgroundView = UIView(frame: CGRect(x: 0, y: 0, width: (self.tableView?.bounds.size.width)!, height: (self.tableView?.bounds.size.height)!)) 
    backgroundView.backgroundColor = UIColor.red 
    to.tableView?.backgroundView = backgroundView 
    } 
    } 

Это не работает, потому что to.tableView равен нулю при обратном вызове.

Я думаю, что это не возможно изменить контроллер без изменений на библиотеки Eureka

редактировать: добавить скриншот, чтобы лучше понять: eureka form MultipleSelectorRow

Благодаря

ответ

1

Я нашел решение, я подклассы оригинальный MultipleSelectorViewController следующим образом:

import Foundation 
import Eureka 
import ChameleonFramework 

public class MFAMultipleSelectorViewController<T:Hashable> : MultipleSelectorViewController<T> { 

    open override func viewDidLoad() { 
    super.viewDidLoad() 
    setTableViewBackgroundGradient(FlatMintDark(), FlatMintDark().lighten(byPercentage: 0.05)!) 
    } 
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 
    cell.backgroundColor = ClearColor() 
    } 
} 

open class _MFAMultipleSelectorRow<T: Hashable, Cell: CellType>: GenericMultipleSelectorRow<T, Cell, MFAMultipleSelectorViewController<T>> where Cell: BaseCell, Cell: TypedCellType, Cell.Value == Set<T> { 
    public required init(tag: String?) { 
    super.init(tag: tag) 
    } 
} 

public final class MFAMultipleSelectorRow<T: Hashable> : _MFAMultipleSelectorRow<T, PushSelectorCell<Set<T>>>, RowType { 
    public required init(tag: String?) { 
    super.init(tag: tag) 
    } 
} 

screenshot

0

Используйте default cell customizer.

LabelRow.defaultCellUpdate = { cell, row in 
    cell.contentView.backgroundColor = .red 
    cell.textLabel?.textColor = .white 
    cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 13) 
    cell.textLabel?.textAlignment = .right 
+0

это не взаимодействует с представил ViewController – avalla

+0

'self.tableView .backgroundColor =? UIColor.green', это должно решить вашу проблему (протестировано, и теперь все зеленое) – Fabiosoft

+0

Внутри, где обратный вызов? Я думаю, что вы говорите об этой форме, а не о множественном диспетчере просмотра, который представлен после нажатия – avalla

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