1

我是 Objective-C 和 Xcode 的新手。我以前写过C程序,所以在使用Xcode时遇到了很多问题。

现在,我正在编写一个类似“instagram”的应用程序来显示图像和相关评论。所有这些图像和评论都来自数据库,这在我的问题中并不重要。

所以,请看看我的设计。 点我

这是“一个单元格设置”,应用程序将在向下滚动并显示另一个单元格时继续显示不同的图像和评论。

首先,我创建一个UITableViewController,然后将表格视图单元格放大到整个视图。我UIImageView在单元格“上”添加了一个表格视图,因此,这是一个自定义单元格。

然后我创建一个UITableViewCell类来实现这个自定义单元格。我搜索并发现我可以在此类中添加一个子视图以在我的自定义单元格UITableViewCell中显示,UIImage例如:

UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(cell.contentView.frame.origin.x,     cell.contentView.frame.size.height, 20, 20)];
imageView.image = [UIImage imageNamed:@"Icon.png"];
[cell.contentView addSubview:imageView];

但我不知道如何添加一个UITableView作为我的自定义单元格的子视图。说,我可以添加一个代码

[cell.contentView addSubView:tableView] ;

到我的自定义单元格类上,但是我在哪里可以配置这个嵌入式的单元格内容TableView?因此这种方法:

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

那么,有人可以建议我如何实现这一目标吗?还是有另一种方法可以实现目标?谢谢您的帮助。

4

1 回答 1

2

我认为你走对了。

创建一个从 派生的自定义 tableview 单元格,在单元格的内容视图中UITableViewCell添加一个UIImageViewUITableView。在这个自定义单元类中添加 tableview 的委托函数。当您创建此自定义单元格的实例时,从您的主视图中,也为您的评论表设置数据源。

根据评论编辑

您已经有一个UITableViewController包含UITableView用于显示图像和评论的一个。此类将包含用于处理此数据源的委托方法。让我们说这个类的名称为 ContentViewController。

在此类中,您必须cellForRowAtIndexPath按如下方式处理实际数据源:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellId= @"CellId";
    UITableViewCell *cell = nil;
    yourDataObj = [yourDataSource objectAtIndex:indexPath.row];
    cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    if (cell == nil){
       cell = [[[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId:yourDataObj]autorelease];
    }
    //Do other cell updations here
    // yourDataObj is a custom class which conatins an array to hold your comments data.
}

现在在您的 CustomCell 类中,您将拥有UIImageViewUITableView。所以这个 CustomCell 类的 init 方法看起来像这样。

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier: (NSString *)reuseIdentifier :(YourDataObj*)cellDisplayData{

     if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {

          //You need to alloc and init your imageView and tableView here.
          self.imageView.image = cellDisplayData.image;// or image url whatever
          self.commentsTableDataSource = cellDisplayData.comments; //commentsTableDataSource is property holding comments array

          self.commentsTable.delegate = self;
          self.commentsTable.dataSource = self;
          [self.commentsTable reloadData]; 
     }
 }

此外,现在在这个自定义单元类中,您可以添加 tableview 的委托并使用 commentsTableDataSource 作为评论表的数据源。希望您对如何实施有所了解。请试一试。

编码快乐!!

于 2013-07-10T10:00:05.467 回答