我做了一个应用程序,这个应用程序有几个功能。它有 Table View
, Labels
, Buttons
等我做了一个Picker View
在一个名为 SettingsViewController
的类中这对于选择语言很有用。我做到了,效果很好,但我不知道如何更改 Table View
的文本和 Labels
其他类(class)。我没有类的经验。
这是我的课SettingsViewController
:
import Foundation
import UIKit
class SettingsViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
var languages = ["English", "German", "French"]
var selectedLanguage = 0
@IBOutlet var languageLabel: UILabel!
@IBOutlet var topPartView: UIView!
@IBOutlet weak var languagePicker: UIPickerView!
@IBOutlet var SubmitLanguageButton: UIButton!
@IBAction func pickLanguageButton(sender: AnyObject) {
//Show Picker
topPartView.hidden = false
languagePicker.hidden = false
SubmitLanguageButton.hidden = false
}
@IBAction func submitLanguageButton(sender: AnyObject) {
//Hidde Picker
topPartView.hidden = true
languagePicker.hidden = true
SubmitLanguageButton.hidden = true
if (selectedLanguage == 0) {
languageLabel.text = "English"
}
else if (selectedLanguage == 1) {
languageLabel.text = "German"
}
else if (selectedLanguage == 2) {
languageLabel.text = "French"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
topPartView.hidden = true
languagePicker.hidden = true
SubmitLanguageButton.hidden = true
languagePicker.delegate = self
languagePicker.dataSource = self
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return languages[row]
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return languages.count
}
// returns the number of 'columns' to display.
public func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
selectedLanguage = row
}
}
另一个随机ViewController
与 Table View
和 Label
:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
let foodList:[String] = ["Apple", "Bread", "Phineapple", "Water", "Other"]
@IBOutlet weak var myTableView: UITableView!
@IBOutlet var foodTitleLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
foodTitleLabel.text = "Food"
myTableView.reloadData()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var returnValue = 0
return returnValue
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let myCell = tableView.dequeueReusableCellWithIdentifier("myCells", forIndexPath: indexPath)
myCell.textLabel!.text = foodList[indexPath.row]
myCell.textLabel!.numberOfLines = 0
return myCell
}
}
那我要怎么改Labels
和 Table View
来自另一个类(class),因为每个文本都必须使用在 SettingsViewController
中选择的语言?
例如:当用户选择英文时,所有的文本都是ViewController
必须是英文的。
当用户选择法语时,所有的文本 ViewController
必须是法语。
如果这个问题不清楚,请告诉我,我会尝试展示更多信息。感谢您的贡献。
最佳答案
我们可以用更少的代码以更简洁的方式完成此任务,例如:
enum names{
case English, German, French
func food() -> String {
switch self {
case English: return "food"
case German: return "Lebensmittel"
case French: return "Aliments"
}
}
func foodList() -> [] {
switch self {
case English: return ["Apple", "Bread", "Pineapple", "Water", "Other"]
case German: return [ "Apfel", "Brot", "Pineapple", "Wasser","Andere"]
case French: return ["Pomme", "Pain", "Ananas", "Eau", "Autre"]
}
}
}
import UIKit
var lang = names.English
class SettingsViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
foodTitleLabel.text = lang.food()
foodList = lang.foodList()
关于swift - 如何从另一个类更改标签和表格 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36291894/