如何创建自定义视图部分?

时间:2011-10-18 19:15:11

标签: objective-c cocoa-touch

假设我想在屏幕上为一些矩形分配一些空间,每个矩形负责保存一些数据。我认为这将是一个有3行的TableView

表示外形的对象是什么,框表会坐在哪里?

/-----------\
| some txt  |
| more txt  |
| other txt |
\-----------/

/-----------\
| some txt  |
| more txt  |
| other txt |
\-----------/

我想我可以把它变成一个无法点击的UIButton,但把UITableView放在里面看起来很尴尬。

如何在Stocks应用程序中完成?顶部有一个部分,底部有一个部分。

1 个答案:

答案 0 :(得分:2)

每个tableView有不同的标题:一个用于tableView,每个部分可以有一个

绿色是tableViewHeader,而蓝色显示sectionHeaders。

enter image description here

-(void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    if (headerView == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"DetailContactHeader" owner:self options:nil];
        headerView.nameLabel.text = [NSString stringWithFormat:@"%@ %@", 
                                                   [contact objectForKey:@"name"],
                                                   [contact objectForKey:@"familyname"]];
        if ([[contact allKeys] containsObject:@"pictureurl"]) {
            headerView.avatarView.image = [UIImage imageNamed:[contact objectForKey:@"pictureurl"]];
        }
    }
    [self.tableView setTableHeaderView: headerView];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2;
}

- (NSInteger)tableView:(UITableView *)tableView 
 numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [[contact allKeys] count]-3;
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView       
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 
                                       reuseIdentifier:CellIdentifier] autorelease];
    }

    id key = [self.possibleFields objectAtIndex:indexPath.row];
    cell.textLabel.text = [NSString stringWithFormat:@"%@", key];
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", [contact objectForKey:key]];
    return cell;
}

-(CGFloat) tableView:(UITableView *)tableView 
  heightForHeaderInSection:(NSInteger)section
{
    return 44.0;
}

-(UIView *) tableView:(UITableView *)tableView 
viewForHeaderInSection:(NSInteger)section
{
    UILabel *l = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease];
    l.backgroundColor = [UIColor clearColor];
    l.text= @"I am a Section Header";
    return l;
}

您可以在此处找到此应用的代码:MyContacts

对于任何…header…方法,都有相应的…footer…方法。

如何在Stock应用程序中完成,我只能猜测:我认为有点类似。

要判断这是否是适合您的解决方案,您不会提供足够的信息。但我想是的。