如何使用 viewController 中的 class 函数访问编辑 UILabel
How To get access to edit UILabel by using a class function inside the viewController
ViewController 有一个名为 userInput 的文本字段,它允许用户添加一个值,所以我想在用户按下计算按钮时更改标签名称。我使用 class 修改标签名称,当从 class xcode 内部调用 viewController 标签时显示 "viewController does not have a member name userAnswer" 但我的代码确实有一个名为 userAnswer 的标签。
import UIKit
class ViewController2: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate {
@IBOutlet var userInput: UIPickerView!
@IBOutlet var userTo: UIPickerView!
@IBOutlet var userValue: UITextField!
@IBAction func calculate(sender: AnyObject) {
var textboxValue = userValue.text.toInt()
if textboxValue != nil {
if selection1 == 0 {
let milimeter = Milimeter()
milimeter.toCnverter(textboxValue!, item: selection2)
userAnswer.text = " "
} else if selection1 == 1 {
} else if selection1 == 2 {
} else if selection1 == 3 {
} else if selection1 == 4 {
}
} else {
userAnswer.text = "Please enter a Value"
}
}
@IBOutlet var userAnswer: UILabel!
let length1 = ["Milimeter","Centimeter","Inch","Meter","Kilometer"]
let length2 = ["Milimeter","Centimeter","Inch","Meter","Kilometer"]
var selection1 = 0
var selection2 = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
userInput.delegate = self
userInput.dataSource = self
userTo.delegate = self
userTo.dataSource = self
}
class Milimeter {
func toCnverter(value: Int, item: Int) {
switch item {
case 0:
userAnswer.text = " " // i can't access , shows error
case 1:
println("Inch")
case 2:
println("Kilometer")
default:
println(" ")
}
}
}
}
如果您在 .h 文件中创建了标签的 IBOutlet
,如下所示:
@property (nonatomic, strong) IBOutlet UILabel *userAnswer;
尝试通过self.userAnswer
访问它
您似乎忘记了将 UIStoryboard
中的 UILabel
与代码中的 UILabel
连接起来。为了 100% 确定,请从您的代码中删除该变量,然后将 UIStoryboard
的插座重新连接到您的代码。
看完全部代码后编辑:
您的 class
毫米不知道您的 UILabel
因为它不是它的属性,而是 UIViewController
.
的属性
我的建议:func toConverter
应该 return 它转换的内容。这使得它也可以测试 -> func toConverter(value: Int, item: Int) -> String
您的 if-statement
看起来像这样:
if selection1 == 0 {
let milimeter = Milimeter()
userAnswer.text = milimeter.toCnverter(textboxValue!, item: selection2)
}
Here 是 swift
中关于 Access Control
的更多信息
ViewController 有一个名为 userInput 的文本字段,它允许用户添加一个值,所以我想在用户按下计算按钮时更改标签名称。我使用 class 修改标签名称,当从 class xcode 内部调用 viewController 标签时显示 "viewController does not have a member name userAnswer" 但我的代码确实有一个名为 userAnswer 的标签。
import UIKit
class ViewController2: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate {
@IBOutlet var userInput: UIPickerView!
@IBOutlet var userTo: UIPickerView!
@IBOutlet var userValue: UITextField!
@IBAction func calculate(sender: AnyObject) {
var textboxValue = userValue.text.toInt()
if textboxValue != nil {
if selection1 == 0 {
let milimeter = Milimeter()
milimeter.toCnverter(textboxValue!, item: selection2)
userAnswer.text = " "
} else if selection1 == 1 {
} else if selection1 == 2 {
} else if selection1 == 3 {
} else if selection1 == 4 {
}
} else {
userAnswer.text = "Please enter a Value"
}
}
@IBOutlet var userAnswer: UILabel!
let length1 = ["Milimeter","Centimeter","Inch","Meter","Kilometer"]
let length2 = ["Milimeter","Centimeter","Inch","Meter","Kilometer"]
var selection1 = 0
var selection2 = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
userInput.delegate = self
userInput.dataSource = self
userTo.delegate = self
userTo.dataSource = self
}
class Milimeter {
func toCnverter(value: Int, item: Int) {
switch item {
case 0:
userAnswer.text = " " // i can't access , shows error
case 1:
println("Inch")
case 2:
println("Kilometer")
default:
println(" ")
}
}
}
}
如果您在 .h 文件中创建了标签的 IBOutlet
,如下所示:
@property (nonatomic, strong) IBOutlet UILabel *userAnswer;
尝试通过self.userAnswer
您似乎忘记了将 UIStoryboard
中的 UILabel
与代码中的 UILabel
连接起来。为了 100% 确定,请从您的代码中删除该变量,然后将 UIStoryboard
的插座重新连接到您的代码。
看完全部代码后编辑:
您的 class
毫米不知道您的 UILabel
因为它不是它的属性,而是 UIViewController
.
我的建议:func toConverter
应该 return 它转换的内容。这使得它也可以测试 -> func toConverter(value: Int, item: Int) -> String
您的 if-statement
看起来像这样:
if selection1 == 0 {
let milimeter = Milimeter()
userAnswer.text = milimeter.toCnverter(textboxValue!, item: selection2)
}
Here 是 swift
中关于Access Control
的更多信息