swift - 如何从另一个类更改标签和表格 View ?

标签 swift uitableview label

我做了一个应用程序,这个应用程序有几个功能。它有 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
}
}

另一个随机ViewControllerTable ViewLabel :

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
}
}

那我要怎么改LabelsTable 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/

相关文章:

ios - 为什么 iOS 模拟器上不会触发通知?

ios - 重新加载包含 UIPageViewController 的 DetailViewController

qt - QToolbar 中的标签

ios - 在 UITableViewController 中以编程方式切换 UITableView

label - 标题和 Axis 标签

c# - 自定义标签不显示文本字符串

ios - 如何使用 UILongPressGestureRecognizer 计算长按按钮的时间

Swift - 带条件的 GCD 定时器

arrays - swift 平面 map : How to remove only tuples from an array where specific element in the tuple is nil?

java - 为 TableView 单个单元格设置禁用属性