我正在爲我的應用程序的每個受支持的方向創建2個視圖控制器和2個筆尖 - 肖像和景觀按照apple的推薦。繼承支持視圖控制器和筆尖
問題是,我將有負載的重複代碼 - 繼承工作在界面生成器?
即我可以在基類中聲明一個iboutlet標籤並將它用於兩個nib?編輯:我有2個控制器,都從基礎控制器繼承。我可以讓我的IBactions和IBOutlets以及數組和tableview委託代碼放在底座中,然後將它與2個不同的鳥嘴連接起來嗎?我試圖擺脫一些重複問題
我正在爲我的應用程序的每個受支持的方向創建2個視圖控制器和2個筆尖 - 肖像和景觀按照apple的推薦。繼承支持視圖控制器和筆尖
問題是,我將有負載的重複代碼 - 繼承工作在界面生成器?
即我可以在基類中聲明一個iboutlet標籤並將它用於兩個nib?編輯:我有2個控制器,都從基礎控制器繼承。我可以讓我的IBactions和IBOutlets以及數組和tableview委託代碼放在底座中,然後將它與2個不同的鳥嘴連接起來嗎?我試圖擺脫一些重複問題
問:我可以在基類中聲明iboutlet標籤並將它用於兩個nib嗎?
答:是的,它會工作,使用initWithNibName初始化控制器與所需的Nib(xib)。
我剛剛發佈here,但我認爲你也可以從中受益。
我知道這是一個古老的線程,但我只是發現了一個令人難以置信的博客文章here。
本質上,您必須遍歷父類的所有視圖,並將它們作爲子視圖添加到您的子類。這裏是我是如何實現它在我的項目:
// ChildViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
[self addSubviewsFromSuperclass];
}
// ParentViewController.h
- (void)addSubviewsFromSuperclass;
// ParentViewController.m
- (void)addSubviewsFromSuperclass
{
UIView *selfView = self.view;
UIView *nibView = nil;
@try
{
nibView = [NSBundle.mainBundle loadNibNamed:NSStringFromClass([self superclass]) owner:self options:nil][0];
}
@catch (NSException *exception)
{
NSLog(@"Something exceptional happened while loading nib:\n%@", exception);
}
self.view = selfView;
for (UIView *view in nibView.subviews)
{
[self.view addSubview:view];
}
}
這addSuviewsFromSuperclass方法是不是我的編碼。我必須完全讚賞上面提到的博客作者。下載他的示例項目,你會在他的JMViewController.m中找到它。
您是否可以在我上次編輯後更新您的答案(如果有任何更改)。我只是想在我走下這條路線之前確定 - 如果它有效,它會爲我節省很多時間! – TheLearner 2011-04-11 14:16:21
@thelearner是的,這是可能的。你可以嘗試一個簡單的1 IBOutlet,它應該需要3分鐘:) – 2011-04-11 16:45:04
@inovation - 只是爲了讓你知道,這是行不通的,因爲當孩子類調用super dealloc時,它釋放所有的出口和控制,其他孩子可能需要。看到這個問題:http://tinyurl.com/3m5nh75 – TheLearner 2011-04-12 17:56:01