单独 swift 文件中的 UILabel 函数
UILabel in function in separate swift file
我想知道如何使用 UILabel
@IBOutlet weak var MyLabel : UILabel!
在函数中,在另一个 swift 文件中。
"SecondSwift file"
func MyFunc {
print(MyLabel.text = "")
}
现在我遇到了无法在单独的 swift 文件中使用我的 UILabel
的问题
我有很多功能,如果我需要在那里制作我的所有功能,我的 MainViewController
会变得混乱。
所以我想知道是否可以在另一个 swift 文件的函数中使用 UILabel
以便我以后可以使用它
你的 UILabel 属性 属于某个 class 的实例,所以为了访问标签,你需要调用那个 class 上的方法,或者传递实例class 到你的 func.
func myFunc(mainVC: MainViewController) {
print(mainVC.MyLabel.text)
}
如果目的只是将与 MainViewController
相关的源代码拆分为多个源文件,您可以在单独的文件中创建 class MainViewController
的扩展.swift
源文件。
考虑以下简单示例,包含两个源文件,MainViewController.swift
和 MainViewControllerExtensions.swift
:
/* Source file: MainViewController.swift */
import UIKit
class MainViewController: UIViewController {
@IBOutlet weak var myLabel: UILabel!
private var myPrivateInt = 1
// ...
override func viewDidLoad() {
super.viewDidLoad()
myLabel.text = "foo"
/* member methods defined in separate source file */
foo() /* set 'myLabel' text to "foobar" */
printLabel(myLabel) /* print text of UILabel argument;
here, prints "foobar" */
}
}
/* Source file: MainViewControllerExtensions.swift */
extension MainViewController {
func foo() {
myLabel.text = "foobar"
// myPrivateInt <-- not accessible in this scope
}
func printLabel(label: UILabel) {
print(label.text ?? "")
}
}
在上面的简单示例中加载视图后,您的标签将包含文本 "foobar"
。
但是请注意,单独源文件中的扩展无法访问主文件中的 private 属性和方法。然而,swift 中的大多数实体的默认访问级别为 internal;您可以从单独的源文件访问内部属性和方法,如上例所示。因此,除非您明确定义 properties/methods 的私有访问级别,否则您将能够在 separate-source-file 扩展中访问它们。
有关 Swift 中访问级别的更多信息,请参阅 Language Guide - Access Control。
我想知道如何使用 UILabel
@IBOutlet weak var MyLabel : UILabel!
在函数中,在另一个 swift 文件中。
"SecondSwift file"
func MyFunc {
print(MyLabel.text = "")
}
现在我遇到了无法在单独的 swift 文件中使用我的 UILabel
的问题
我有很多功能,如果我需要在那里制作我的所有功能,我的 MainViewController
会变得混乱。
所以我想知道是否可以在另一个 swift 文件的函数中使用 UILabel
以便我以后可以使用它
你的 UILabel 属性 属于某个 class 的实例,所以为了访问标签,你需要调用那个 class 上的方法,或者传递实例class 到你的 func.
func myFunc(mainVC: MainViewController) {
print(mainVC.MyLabel.text)
}
如果目的只是将与 MainViewController
相关的源代码拆分为多个源文件,您可以在单独的文件中创建 class MainViewController
的扩展.swift
源文件。
考虑以下简单示例,包含两个源文件,MainViewController.swift
和 MainViewControllerExtensions.swift
:
/* Source file: MainViewController.swift */
import UIKit
class MainViewController: UIViewController {
@IBOutlet weak var myLabel: UILabel!
private var myPrivateInt = 1
// ...
override func viewDidLoad() {
super.viewDidLoad()
myLabel.text = "foo"
/* member methods defined in separate source file */
foo() /* set 'myLabel' text to "foobar" */
printLabel(myLabel) /* print text of UILabel argument;
here, prints "foobar" */
}
}
/* Source file: MainViewControllerExtensions.swift */
extension MainViewController {
func foo() {
myLabel.text = "foobar"
// myPrivateInt <-- not accessible in this scope
}
func printLabel(label: UILabel) {
print(label.text ?? "")
}
}
在上面的简单示例中加载视图后,您的标签将包含文本 "foobar"
。
但是请注意,单独源文件中的扩展无法访问主文件中的 private 属性和方法。然而,swift 中的大多数实体的默认访问级别为 internal;您可以从单独的源文件访问内部属性和方法,如上例所示。因此,除非您明确定义 properties/methods 的私有访问级别,否则您将能够在 separate-source-file 扩展中访问它们。
有关 Swift 中访问级别的更多信息,请参阅 Language Guide - Access Control。