這就是我所做的。再一些技術是非常尷尬的,我需要改進。
首先我創建了一個新的UITableViewCell的子類。問題是我沒有選擇檢查「包含」xib。就好像xib只適用於UIViewcontroller。我想你可以使用XIB創建UIViewController的子類,然後創建UITableViewCell的另一個子類並將該模板移動到UIViewController的子類。
作品。
然後我把這些功能:
@implementation BGCRBusinessForDisplay2
- (NSString *) reuseIdentifier {
return [[self class] reuseIdentifier];
};
+ (NSString *) reuseIdentifier {
return NSStringFromClass([self class]);
};
初始化我做的:
- (BGCRBusinessForDisplay2 *) initWithBiz: (Business *) biz
{
if (self.biz == nil) //First time set up
{
self = [super init]; //If use dequeueReusableCellWithIdentifier then I shouldn't change the address self points to right
NSString * className = NSStringFromClass([self class]);
PO (className);
[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil];
[self addSubview:self.view]; //What is this for? self.view is of type BGCRBusinessForDisplay2. That view should be self, not one of it's subview Things don't work without it though
}
if (biz==nil)
{
return self; //Useful if we only want to know the height of the cell
}
self.biz = biz;
self.Title.text = biz.Title; //Let's set this one thing first
self.Address.text=biz.ShortenedAddress;
的[self addSubview:self.view];
是一種尷尬。這是其他人說我應該做的,沒有它就無法工作。其實我想self.view是自我,而不是自我的子視圖。但是,嘿......不知道如何去做。 ...
然後我實現這個對的cellForRowAtIndexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//[FetchClass singleton].FetchController
if([BGMDCRFetchClass singleton].FetchController.fetchedObjects.count!=0){
BGCRBusinessForDisplay2 *cell = (BGCRBusinessForDisplay2*)[tableView dequeueReusableCellWithIdentifier:[BGCRBusinessForDisplay2 reuseIdentifier]];
if (cell == nil)
{
cell =[BGCRBusinessForDisplay2 alloc];
}
else{
while (false);
}
Business * theBiz=[[BGMDCRFetchClass singleton].FetchController objectAtIndexPath:indexPath];
cell = [cell initWithBiz:theBiz];
return cell;
//return theBiz.CustomCell;
}else{
UITableViewCell * tvc=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"tvc"];
return tvc;
}
}
請注意,我由init分開頁頭。這有點尷尬。這就是爲什麼在我的 - (BGCRBusinessForDisplay2 *) initWithBiz: (Business *) biz
之前如果一個單元已經被初始化了,我只是不做init的上半部分。我只是將Business *的值分配給BGCRBusinessForDisplay2中的各個出口。
我有人可以提高我的答案,他們是受歡迎的。到目前爲止它的工作。
http://adeem.me/blog/2009/05/30/iphone-sdk-tutorial-part-6-creating-custom-uitableviewcell-using-interface-builder-uitableview/這是很好的教程對於這個問題。 –