的UILabel在单独的迅速文件

问题描述:

功能我想知道如何在功能使用UILabel的UILabel在单独的迅速文件

@IBOutlet weak var MyLabel : UILabel! 

,在另一个迅速文件。

"SecondSwift file" 

func MyFunc { 
print(MyLabel.text = "") 
} 

现在我已经得到了我不能在一个单独的文件迅速用我UILabel问题

我已经得到了很多的功能,我MainViewController变得混乱,如果我需要让所有我的功能在那里。

所以我想知道如果能够在一个函数使用UILabel在另一个快捷文件,这样我就可以在以后使用它

+0

所以你想访问另一个swift文件中的MyLabel文本? –

+0

是的,我在我的MainView中得到了MyLabel, ,我想创建一个快速文件例如“MainFunc.swift” 并在该swift文件中使用MyLabel :) –

+0

因为我所有的Functons都会更改或打印UILabel或UIButton, al代码有点凌乱在1个文件中:) –

如果目的是简单地分裂与MainViewController一个以上的源文件的源代码,你可以创建一个单独的.swift源文件的扩展,您MainViewController类。

考虑下面简单的例子,包括两个源文件,MainViewController.swiftMainViewControllerExtensions.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) }

+0

如果你在你的函数中调用MainView,你还需要在 打印中调用它吗? (对不起,我在工作atm,所以不能测试它):D –

+0

如果myLabel是一个VAR内mainVC那么这是唯一的方式来访问它 –