使用TTSectionedDataSource将图像和标题文本添加到Three20表部分

时间:2011-02-17 21:51:39

标签: iphone objective-c ios three20 sectionheader

我正在尝试使用TTTableViewController创建表格。我想在节标题中显示一个图像以及一些标题文本,类似于instagram和许多其他应用程序所做的。我尝试使用TTNavigatorDemo中的示例来显示来自TTSectionedDatasource的数据,(我不确定这是否是正确的方法,如果你知道的话,请提出一些更好的方法)。它包含部分名称/标题作为常规字符串,数据包含TTTableViewItem。我尝试使用<UITableViewDelegate>协议并使用viewForHeaderInSection方法实现它,现在数据与section分开了。有没有更好的方法使用Three20我可以传递我的Header / Section视图和TableItemView在数据源中,因为它允许我实现TTTableViewDragRefreshDelegate,我在课堂上实现<UITableViewDelegate>协议时无法实现。

我的班级声明现在看起来像

@interface ImageTable : TTTableViewController <UITableViewDelegate> { }

我想显示带有图片和文字的部分标题,如:

Instagram

我目前正在使用TTNavigatorCode填充我的数据 表是:

   self.dataSource = [TTSectionedDataSource dataSourceWithObjects:
                               @"Food"
                               [TTTableViewItem itemWithText:@"Porridge" URL:@"tt://food/porridge"],
                               [TTTableTextItem itemWithText:@"Bacon & Eggs" URL:@"tt://food/baconeggs"],
                               [TTTableTextItem itemWithText:@"French Toast" URL:@"tt://food/frenchtoast"],
                               @"Drinks",
                               [TTTableTextItem itemWithText:@"Coffee" URL:@"tt://food/coffee"],
                               [TTTableTextItem itemWithText:@"Orange Juice" URL:@"tt://food/oj"],
                               @"Other",
                               [TTTableTextItem itemWithText:@"Just Desserts" URL:@"tt://menu/4"],
                               [TTTableTextItem itemWithText:@"Complaints" URL:@"tt://about/complaints"],
                               @"Other",
                               [TTTableTextItem itemWithText:@"Just Desserts" URL:@"tt://menu/4"],
                               [TTTableTextItem itemWithText:@"Complaints" URL:@"tt://about/complaints"],
                               nil];

通过实施该方法,我能够做出类似的事情:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
  return myCustomView;    
}

但由于我的数据来自模型类,我希望生成视图并以格式化方式将它们添加到数据源。我想知道是否有一种使用Three20的方法,通过该方法,我为部分指定了数据数组,并为部分下的相应数据指定了另一个数组?

非常感谢您的帮助

由于

1 个答案:

答案 0 :(得分:1)

创建委托FOOTableDelegate.h

@interface FOOTableDelegate : TTTableViewDragRefreshDelegate 
{

}

- (UIView*) createHeaderView:(FOODataSource *)fDataSource forSectionID:(NSString *)secID;

@end

在FOOTableDelegate.m文件中

- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
 {
    if (tableView.style == UITableViewStylePlain) 
        {
        if ([tableView.dataSource respondsToSelector:@selector(tableView:titleForHeaderInSection:)]) 
                {
            NSString* title = [tableView.dataSource tableView:tableView titleForHeaderInSection:section];
            if (title.length > 0) 
                        {
                UIView* header = [_headers objectForKey:title];

                if (nil != header)
                                {
                    header.alpha = 1;

                } 
                                else 
                                {
                    if (nil == _headers) 
                                        {
                        _headers = [[NSMutableDictionary alloc] init];
                    }

                    header = [self createHeaderView:tableView.dataSource forSectionID:title];
                    [_headers setObject:header forKey:title];
                }
                return header;
            }
        }
    }
    return nil;
}

- (UIView*) createHeaderView:(FeedDataSource *)fDataSource forSectionID:(NSString *)secID
{

     //do some code for header View

    return View;

}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    //return height for the Section Header
    return height;
}

这将帮助您解决问题