我有一個從UITableViewCell繼承的自定義表格單元格。它工作正常。如何在iOS項目中繼承XIB文件?
現在我必須爲其他屏幕製作同樣類型的單元格,但只需稍作修改即可。我計劃繼承我的舊單元類來重用它的設計和邏輯,但是我找不到如何繼承xib文件的方法。
我應該從一個xib複製/粘貼所有視圖到其他還是有一種方法來擴展它幾乎沒有變化?
編輯:我已閱讀下列問題,他們公司不可能馬上聲稱:
如果這是不可能的,我們應該用什麼樣的方法來這樣做有效嗎?
我有一個從UITableViewCell繼承的自定義表格單元格。它工作正常。如何在iOS項目中繼承XIB文件?
現在我必須爲其他屏幕製作同樣類型的單元格,但只需稍作修改即可。我計劃繼承我的舊單元類來重用它的設計和邏輯,但是我找不到如何繼承xib文件的方法。
我應該從一個xib複製/粘貼所有視圖到其他還是有一種方法來擴展它幾乎沒有變化?
編輯:我已閱讀下列問題,他們公司不可能馬上聲稱:
如果這是不可能的,我們應該用什麼樣的方法來這樣做有效嗎?
您應該複製文件並進行必要的更改。
謝謝
沒有什麼XIB編輯器可以做的,你不能以編程方式做。最簡單的路徑是(通常)將其全部移至代碼,然後從所有目標/項目中刪除XIB。然後,你可以繼承你的喜好。
作爲獎勵,這可以真正簡化多個目標的資源管理。
將其移動到代碼的另一種方法是將可修改部分移動到其他實例(由單元格保存/引用)。控制器可以在演示之前設置該屬性。因此,如果程式化和繪圖在某些方面是特殊或可定製的,那麼只需將該邏輯移出到不依賴於XIB反序列化的類層次結構,然後製作在nib中定義的單元的那些部分屬性。
如果您正在爲您的問題尋找其他解決方案,那麼我建議您以編程方式創建自定義單元格。
我正在一步一步解釋你,這會幫助你更好。
所以爲了創建一個繼承自UITableViewCell
的類,並在tabelCell中添加需要的組件。
所以你的.h文件看起來像這樣。
// -------- ------- START >>
#import <UIKit/UIKit.h>
@interface CustomCell : UITableViewCell{
UIButton *btn1;
UIButton *btn2;
UIButton *btn3;
}
@property(nonatomic , retain) UIButton *btn1;
@property(nonatomic , retain) UIButton *btn2;
@property(nonatomic , retain) UIButton *btn3;
@end
// ------- ------- END < <
和你的。M檔看起來像這樣
// -------- ------- START >>
#import "CustomCell.h"
@implementation CustomCell
@synthesize btn1, btn2, btn3;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
//----frame the components as per your project req.----
btn1 = [[UIButton alloc] initWithFrame:CGRectMake(1, 1, 85, 70)];
[self.contentView addSubview:btn1];
btn2 = [[UIButton alloc] initWithFrame:CGRectMake(100, 1, 85, 70)];
[self.contentView addSubview:btn2];
btn3 = [[UIButton alloc] initWithFrame:CGRectMake(195,1, 85, 70)];
[self.contentView addSubview:btn3];
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
// -------- END- ------ < <
現在你準備在你的其他類重用這個自定義單元格。也可以根據需要進行修改。
現在的cellForRowAtIndexPath >>
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
static NSString *CellIdentifier = @"Cell";
CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
}
[cell.btN1 setImage:[UIImage imageNamed:@"YOUR IMAGE NAME"] forState:UIControlStateNormal]; // YOU CAN MAKE CHANGES HERE.
................// remaining logic goes here
return cell;
}
希望這會幫助你。
我覺得你沒看過我的問題;我已經從UITableViewCell類,繼承自定義單元格;我知道如何爲tableView製作自定義單元格;我需要一個級別的繼承,不是直接來自UITableViewCell,而是來自我自己的自定義單元類,重要的是重用xib文件視圖; – Ans
您是否嘗試過只子類的自定義單元格視圖類?這樣,你可以有IBOutlets爲所有UI組件的基類,並在新的子類,只要你想,按新的行爲就可以對其進行管理。這將是就像繼承一個UIView或一個UIViewController等
它發生在我一次,我所做的是:
相反子類的我做了一個單獨的具有表UIView
與customCell並補充說,視圖子視圖需要的地方。我能夠在customCell中使用鍵更改customCell的UI,以瞭解哪個UIViewController
正在將其添加爲子視圖。
我不知道這種方法有多好,但仍然是一個辦法:)
一邊想着在OO語境,我試圖避免重複; – Ans