2011-11-23 82 views
0

我有点困惑。我试图创建一个自定义单元格,我想使用界面生成器的方式。在UITableView中使用UITableViewCell

我创建一个表正常的方法是有作为表:

.H

@interface AssessList : UIViewController { 

    IBOutlet UITableView *tblAssessList; 
} 

@property(nonatomic, retain) UITableView *tblAssessList; 

@end 

.M

- (NSInteger) 
numberOfSectionsInTableView:(UITableView *)tableView { 
    return groupArray.count; 
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return totalArray.count; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
    } 



    cell.textLabel.text = @"I am the text...."; 

     return cell; 
} 

现在我已经创建了一个新类的细胞,我想我明白如何把它。但我可以离开.h作为

@interface AssessList : UIViewController 

还是用整个表上的类/笔尖是否是UITableViewController?

汤姆

回答

5

做类/笔尖与它的全表必须是 UITableViewController?

号公报UITableViewController仅仅是一个方便UIViewController子类,其具有UITableView和已经设置作为其代表/数据源(它被声明为符合UITableViewDelegateUITableViewDatasource协议),它也已预先填充方法在Xcode为您生成的模板实现文件中实现这些协议。你可以自己做所有这些,我经常这样做。

然而,您应该为您的UITableViewCell制作一个IBOutlet,以便您可以从nib文件加载它(请参阅Table View Programming Guide中的Loading Custom Table-View Cells From Nib Files)。

+0

您是否必须将UITableView笔尖的数据源/委托(所以实际表)设置为filesowner仍然? – TMB87

+0

您可以在IB(检查fileowner类设置为AssessList)或代码(在AssessList viewDidLoad中,如下所示:tblAssessList.delegate = self; tblAssessList.datasource = self; – jbat100

0

我想这应该是子类的UITableViewCell

@interface AssessList : UITableViewCell 
+0

这是完整的表,你说的全表应该是的UITableViewCell的子类或类我已经为自定义单元格中创建,这应该是一个子类? – TMB87

+0

我认为这是你的UITavleViewCell .....在这种情况下,它应该由UITableViewController继承...但仍然不确定 –

+0

TomBeech代码行@interface AssessList:UIViewController是完美的,因为它是具有表视图的UIViewController子类作为它的子视图而不是文件的所有者 –

0

的。当你想你也需要的UITableViewCell的子类定制的tableview细胞..

可以在这里找到教程blog

请记住,可以在不创建自定义单元格的情况下完成很多操作,包括添加开关以使tableview看起来像来自settings.app的那个,以及iPod显示歌曲的方式。

+0

谢谢你,我会读一读。我试图实现的是每张照片下的一张照片和一些文字。这是否必须在自定义类中? – TMB87

0

在assessList类您使用的是otherviewController(UITableViewCell的子类)创建的自定义单元格,所以没有必要改变这一行

@interface AssessList:UIViewController中

注: - otherviewController应UITableViewCell的一个子类

1

如果你想在Interface Builder Way中做,然后创建一个xib(查看xib)。从obj面板中拖放一个UITableViewCell对象。根据需要自定义它。在的tableView:的cellForRowAtIndexPath:方法,这样做:

UITableViewCell * aCell = [tableview dequeueReusableCellWithIdentifier:@"SomeIdentifier"]; 
if (aCell == nil) 
{ 


    NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"CustomCellNibName" owner:self options:nil]; 

    for (NSObject *anObj in arr) { 

     if([anObj isKindOfClass:[UITableViewCell class]]) { 

      aCell = (UITableViewCell *)anObj; 

     } 
    } 
} 

用于tableviewcell标识符可以在IB进行设置。

1

你可以用这个示例代码描述听到。

http://ijoshsmith.com/2011/07/16/creating-a-custom-uitableviewcell-in-ios-4/ 

或者你可以使用这个链接也

http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html 
相关问题