4

我正在尝试使用TTTableViewController. 我想在部分标题中显示图像以及一些标题文本,类似于 instagram 和许多其他应用程序所做的。我尝试使用示例 fromTTNavigatorDemo来显示来自 的数据TTSectionedDatasource,(我不确定这是否是正确的方法,如果您知道,请提出一些更好的方法)。它包含节名称/标题作为常规字符串和数据作为TTTableViewItem. 我尝试实现<UITableViewDelegate>协议并使用viewForHeaderInSection方法实现它,现在数据与部分分离,有没有更好的方法使用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 的方法,通过它我为部分指定一个数据数组,为部分下的相应数据指定另一个数组?

非常感谢您的帮助

谢谢

4

1 回答 1

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;
}

这将帮助您解决问题

于 2011-11-28T07:03:01.730 回答