【发布时间】:2017-12-02 16:01:56
【问题描述】:
我正在使用一个UITableView 来选择带有勾号的国家。但是当我移动到其他屏幕并且当我回来时,我的复选标记是不可见的。我选择的国家似乎很好,但是在我移动到其他屏幕后回来,选择的刻度线不存在。如何快速做到这一点。
我的代码:
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var saveBtn: UIButton!
var languageName : String = String()
var option : [String] = ["English","हिंदी"]
var option1 : [String] = []
let availableLanguages = Localize.availableLanguages()
override func viewDidLoad() {
super.viewDidLoad()
tableView.tableFooterView = UIView()
for language in availableLanguages {
option1.append(language)
let displayName = Localize.displayNameForLanguage(language)
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
//MARK: - TableView
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return option1.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 60
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = option[indexPath.row]
if option1[indexPath.row] == languageName{
cell.accessoryType = UITableViewCellAccessoryType.checkmark
}else{
cell.accessoryType = UITableViewCellAccessoryType.none
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
languageName = option1[indexPath.row]
self.tableView.reloadData()
}
@IBAction func saveButtonPressed(_ sender: Any) {
Localize.setCurrentLanguage(languageName)
if let appdelegate = UIApplication.shared.delegate as? AppDelegate {
appdelegate.showHomeLandingScreen()
}
}
【问题讨论】:
-
你在哪里设置
countryName? -
它与
countryName有什么关系?您所展示的是其他一些 Instance 属性的声明。 -
当您返回时,
countryName会保持不变!! -
@NiravD 我已经在这里更新了我的完整代码。现在国家名称是语言名称..如果我得到解决方案,..我也可以为其他屏幕实现同样的方法
标签: ios iphone swift xcode uitableview