2016-01-20 28 views
0

功能我想知道如何在功能使用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個文件中:) –

回答

3

如果目的是簡單地分裂與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

0

您的UILabel財產屬於某個類的實例,所以爲了訪問標籤,你需要調用該類的方法,或將該類的實例傳遞給你的func。

func myFunc(mainVC: MainViewController) { print(mainVC.MyLabel.text) }

+0

如果你在你的函數中調用MainView,你還需要在 打印中調用它嗎? (對不起,我在工作atm,所以不能測試它):D –

+0

如果myLabel是一個VAR內mainVC那麼這是唯一的方式來訪問它 –