2011-09-26 39 views
2

我在我的iOS應用程序中有很多視圖控制器,並且在其中大多數我需要完全相同的IBAction。如何從其他.h文件導入IBActions?

因此,不是在所有視圖控制器中編寫相同的代碼,而是可以使用IBActions創建一個單獨的.h文件,然後在viewcontroller.h上導入?

我試過創建一個Actions.h文件,並將其與ViewController.h文件中的命令「#import Actions.h」一起導入,但是當我轉到Interface Builder時,操作不顯示。有沒有辦法做到這一點?從它

@interface MyActionViewController: UIViewController 
{ 
} 

- (IBAction)theAction:(id)sender; 

@end 

子類視圖控制器:

+1

問題是按我的信息good..As你必須處理對象庫中的黃色立方體「對象」(即,你可以找到所有的按鈕,標籤,網頁瀏覽等)。這是我從我的老人那裏聽到的,但還沒有嘗試過。 –

+0

我看起來像最好的方式,因爲您可以從其他.h文件訪問IBAction和IBOutlets,但到目前爲止我還無法使其工作。在此之前,創建超類是我使其工作的唯一方法。 – tomDev

回答

5

定義方法在超

@interface FirstViewController: MyActionViewController 
{ 
} 

@end 
+0

謝謝,這項工作100%。適用於通用二進制文件。 – tomDev

1

不進口,你需要繼承。使用該IBAction創建一個viewController,並在您想要使用的每個viewControllers中繼承該viewController。

1

實際上,您也可以在Interface Builder中完成所有操作。您可以使用選項將「對象」添加到您的筆尖文件中。在具有所有界面對象的調色板中,有一個帶有標有「對象」的橙色立方體。

將那個放在視圖層次結構的根級別上。

將自定義類更改爲類的名稱(聽起來像是「Actions」)。一旦將Object的名稱更改爲類的名稱,Interface Builder將允許您訪問該類上的任何IBAction。

將按鈕連接到此自定義類的IBAction。

對於需要使用此按鈕代碼的任何其他nib文件,您可以做同樣的事情,它可以讓您不必爲子類創建子類。

+0

像你所描述的那樣使用,函數被調用,但編碼沒有顯示任何效果。 –

+0

我不確定這意味着什麼......你在說IBAction是成功調用的嗎?或者它沒有被成功調用? –

+0

這個方法看起來不錯,我把ViewController上的動作鏈接起來,一切正常。但是當我在模擬器上運行時,每次點擊連接到IBAction的按鈕時,應用程序都會崩潰。 – tomDev

0

如果有人試圖做到這一點的斯威夫特2,這是多麼:在

import UIKit 

class Actions: UIViewController { 

    @IBAction func button1(sender: AnyObject) { 

    } 

} 

現在的ViewController:

import UIKit 

class ViewController: Menu_Swipes { 

} 
相關問題