Я работаю над этой формой с Eureka конструктор форм.Строка "Веб-страница" - это моя пользовательская строка, и у меня возникла проблема с этой строкой.Когда я нажал на эту строку, метка не меняет цвет, а опция навигации ниже не отображается.
На этих двух рисунках вы можете увидеть мою проблему.
Это код моей пользовательской ячейки:
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"
}
}
}
Я хочу, чтобы моя ячейка тоже меняла цвет метки и показала опции навигации ниже.Могу ли я сделать это, я как?Спасибо!