Параметры навигации не отображаются в пользовательской строке Eureka - PullRequest
0 голосов
/ 18 октября 2018

Я работаю над этой формой с Eureka конструктор форм.Строка "Веб-страница" - это моя пользовательская строка, и у меня возникла проблема с этой строкой.Когда я нажал на эту строку, метка не меняет цвет, а опция навигации ниже не отображается.

enter image description here

enter image description here

На этих двух рисунках вы можете увидеть мою проблему.

Это код моей пользовательской ячейки:

import UIKit
import Eureka
import SearchTextField

final class WebPageCellRow: Row<WebPageCell>, RowType {
  required init(tag: String?) {
    super.init(tag: tag)
    cellProvider = CellProvider<WebPageCell>(nibName: "WebPageCell")
  }
}

final class WebPageCell: Cell<String>, CellType {

@IBOutlet weak var labelWebPage: SearchTextField!
@IBOutlet weak var textFieldWebPage: SearchTextField!

required init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

override func setup() {
    super.setup()

    configureSimpleSearchTextField()

    selectionStyle = .none
    height = { return 44.0 }
}

override func update() {
    super.update()

    // we do not want to show the default UITableViewCell's textLabel
    textLabel?.text = nil

    // get the value from our row
    guard row.value != nil else { return }
}

public func configureSimpleSearchTextField() {
    let countries = localCountries()
    textFieldWebPage.filterStrings(countries)
    textFieldWebPage.font = .preferredFont(forTextStyle: .body)
}

fileprivate func localCountries() -> [String] {
    if let path = Bundle.main.path(forResource: "webpages", ofType: "json") {
        do {
            let jsonData = try Data(contentsOf: URL(fileURLWithPath: path), options: .dataReadingMapped)
            //print("jsonData \(jsonData)")

            let jsonResult = try JSONSerialization.jsonObject(with: jsonData, options: .allowFragments) as! [[String:String]]
            //print(jsonResult.count)

            var countryNames = [String]()
            for country in jsonResult {
                //print(country["name"] ?? "banana")
                countryNames.append(country["name"]!)
            }

            return countryNames
        } catch {
            print("Error parsing jSON: \(error)")
            return []
        }
    }
    return []
}

}

А это мой класс контроллера представления:

import Foundation
import Eureka
import GenericPasswordRow

class ManualPasswordVC: FormViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    initElements()

    //navigationOptions = RowNavigationOptions.Disabled
}

private func initElements(){

    form +++ Section(){ section in
        section.header = {
            var header = HeaderFooterView<UIView>(.callback({
                let view = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
                //view.backgroundColor = UIColor.gray
                let lb = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 60))
                lb.text = "Add the password manually"
                lb.textAlignment = .center
                view.addSubview(lb)
                return view
            }))
            header.height = { 60 }
            return header
        }()
    }

    +++ Section("Enter title and web page of password"){
        $0.header?.height = { 20 }
    }
    <<< TextRow(){ rowTitle in
        rowTitle.title = "Title"
        rowTitle.tag = "rowtitle"
    }.cellUpdate({ (cellTitle, rowTitle) in
        cellTitle.textField.clearButtonMode = .whileEditing
        //cellTitle.textField.borderStyle = .line
        print(cellTitle.textLabel?.textColor)
        print(cellTitle.titleLabel?.textColor)
    })
    <<< WebPageCellRow(){ rowWebPage in
        rowWebPage.tag = "rowWebPage"
    }.cellUpdate({ (cellWebPage, rowWebPage) in
        cellWebPage.textFieldWebPage.clearButtonMode = .whileEditing
        cellWebPage.textFieldWebPage.textAlignment = .right
    })

    +++ Section("Enter a username or email from the password")
    <<< EmailRow(){ rowEmail in
        rowEmail.title = "Email"
        rowEmail.tag = "rowEmail"
    }.cellUpdate({ (cellEmail, rowEmail) in
        cellEmail.textField.clearButtonMode = .whileEditing
    })

    <<< TextRow(){ rowUsername in
        rowUsername.title = "Username"
        rowUsername.tag = "rowUsername"
    }.cellUpdate({ (cellUsername, rowUsername) in
        cellUsername.textField.clearButtonMode = .whileEditing
    })

    +++ Section("Enter password")
    <<< GenericPasswordRow(){ rowPassword in
        rowPassword.title = "Password"
        rowPassword.placeholder = ""
    }.cellUpdate({ (cellPassword, rowPassword) in
        cellPassword.textField.clearButtonMode = .whileEditing
        cellPassword.textField.isSecureTextEntry = false
        cellPassword.textField.textAlignment = .right
        cellPassword.dynamicHeight = (48, 48)
    })

    +++ Section()
    <<< ButtonRow{ rowSave in
        rowSave.title = "SAVE"
    }

}

}

Я хочу, чтобы моя ячейка тоже меняла цвет метки и показала опции навигации ниже.Могу ли я сделать это, я как?Спасибо!

...