的UILabel在单独的迅速文件
功能我想知道如何在功能使用UILabel
的UILabel在单独的迅速文件
@IBOutlet weak var MyLabel : UILabel!
,在另一个迅速文件。
"SecondSwift file"
func MyFunc {
print(MyLabel.text = "")
}
现在我已经得到了我不能在一个单独的文件迅速用我UILabel
问题
我已经得到了很多的功能,我MainViewController
变得混乱,如果我需要让所有我的功能在那里。
所以我想知道如果能够在一个函数使用UILabel
在另一个快捷文件,这样我就可以在以后使用它
如果目的是简单地分裂与MainViewController
一个以上的源文件的源代码,你可以创建一个单独的.swift
源文件的扩展,您MainViewController
类。
考虑下面简单的例子,包括两个源文件,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"
。
但请注意,单独源文件中的扩展名不能从主文件访问私有属性和方法。然而,大多数快速实体具有默认访问级别内部;您可以从单独的源文件访问内部属性和方法,如上例所示。因此,除非您明确定义属性/方法的私有访问级别,否则您将能够以separate-source-file扩展名访问它们。
欲了解更多有关Swift访问级别的信息,请参阅Language Guide - Access Control。
您的UILabel财产属于某个类的实例,所以为了访问标签,你需要调用该类的方法,或将该类的实例传递给你的func。
func myFunc(mainVC: MainViewController) { print(mainVC.MyLabel.text) }
如果你在你的函数中调用MainView,你还需要在 打印中调用它吗? (对不起,我在工作atm,所以不能测试它):D –
如果myLabel是一个VAR内mainVC那么这是唯一的方式来访问它 –
所以你想访问另一个swift文件中的MyLabel文本? –
是的,我在我的MainView中得到了MyLabel, ,我想创建一个快速文件例如“MainFunc.swift” 并在该swift文件中使用MyLabel :) –
因为我所有的Functons都会更改或打印UILabel或UIButton, al代码有点凌乱在1个文件中:) –