2012-04-18 43 views
20

我有一個基類視圖控制器類繼承UIViewController和基類viewcontroller類的繼承類。現在我有一個筆尖,它的文件所有者是繼承類,但是我所有的動作和插座都在基類中。甚至可以將nib文件中的action \ outlet連接到基類中的action \ outlet?如何連接到基類IBOutlet或IBAction

+0

是的。 Xcode中的所有文件都在同一個項目中嗎? – wbyoung 2012-04-18 22:22:12

回答

29

我會example可基本解釋:

定義一個基類(姑且稱之爲BaseViewController),併爲其分配一個UITableView IBOutlet中的.h文件:

// BaseViewController.h 
@interface BaseViewController : UIViewController  
@property (weak, nonatomic) IBOutlet UITableView *tableView;  
@end 

定義兩個孩子類(即FirstChildViewControllerSecondChildViewController):

// FirstChildViewController.h 
@interface FirstChildViewController : BaseViewController 
@end 

// SecondChildViewController.h 
@interface SecondChildViewController : BaseViewController 
@end 

現在做出任何(或兩者)的兒童遊樂n個類使用基類的iboutlet,只需將引用出口拖到基類.h文件中的屬性定義即可!就這樣!

enter image description here

here是一個完整的項目說明了這一點。

+3

嗯..這似乎沒有工作迅速 – 2016-04-25 00:23:57

7

兩種方式來實現:

1)

做編程方式(即代碼)

首先聲明你的網點的基類。

然後通過您的繼承類中的代碼分配您的網點。

2)

您也可以將您的出口和動作在你的XIB文件。 Xcode從基類知道繼承的插座和動作。

4

如果基類在Swift框架中,那麼即使基類和它的出口是公共的,有時Xcode 7也不會看到出口。在這種情況下,解決方法如下:

  1. 在IB設定的控制,以使用基類
  2. 連接出口
  3. 在IB設定的控制用派生類

IB將顯示「!」在插座旁邊,就好像它們缺失一樣,但在運行時不會出現錯誤。

如果有人有更好的解決方法,讓我知道!

+0

你能解釋一些更詳細的如何做這個東西? – c0d3Junk13 2016-01-06 22:23:30

+0

@ c0d3Junk13:打開故事板。顯示身份檢查器。選擇控制。將其類設置爲基類。連接插座。選擇相同的控件並將類設置爲派生類。忽略警告。 – phatmann 2016-01-08 14:23:46

+0

嗯..這似乎hackish ..是否允許?或者它會在以後突破 – 2016-04-25 00:19:14