TableView有2列,iphone / ipad

时间:2011-05-14 11:16:49

标签: iphone ios ios4 uitableview

有人可以告诉我如何创建一个tableview 在Iphone SDK中按列添加两个单元格??

按此顺序排序:

  _____________
  |  1  |   2  |
  |_____|______|
  |  3  |   4  |
  |_____|______|

祝你好运

2 个答案:

答案 0 :(得分:5)

在ios UITableView中,您只能有一个列/单元格。如果您想要更多属性,则需要在同一单元格中通过子计算UITableViewCell来创建自定义表格视图单元格。在界面构建器中,您可以自定义布局。指南:http://adeem.me/blog/2009/05/30/iphone-sdk-tutorial-part-6-creating-custom-uitableviewcell-using-interface-builder-uitableview/

问题的具体示例:

.h文件:

 #import <UIKit/UIKit.h>


@interface MyCell : UITableViewCell {
    UIButton * column1;
    UIButton * column2;

    UILabel* column1_label1;
    UILabel* column1_label2;

    UILabel* column2_label1;
    UILabel* column2_label2;
}

@property (nonatomic,retain) UIButton * column1;
@property (nonatomic,retain) UIButton * column2;

@property (nonatomic,retain) UILabel* column1_label1;
@property (nonatomic,retain) UILabel* column1_label2;

@property (nonatomic,retain) UILabel* column2_label1;
@property (nonatomic,retain) UILabel* column2_label2;

@end

.m文件:

#import "MyCell.h"


@implementation MyCell

@synthesize column1,column1_label1,column1_label2,column2,column2_label1,column2_label2;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        column1 = [UIButton buttonWithType: UIButtonTypeCustom];
        column1.tag = 1;
        column1.autoresizingMask = 292;

        column1.backgroundColor = [UIColor redColor];
        column1.frame = CGRectMake(0, 0, self.contentView.bounds.size.width/2,  self.contentView.bounds.size.height);


        column1_label1 = [[UILabel alloc] initWithFrame: CGRectMake(column1.bounds.size.width*1/5,
                                                                             0,
                                                                             column1.bounds.size.width*4/5,
                                                                             column1.bounds.size.height/2)];

        column1_label1.backgroundColor = [UIColor redColor];
        [column1 addSubview:column1_label1]; 

        column1_label2 = [[UILabel alloc] initWithFrame: CGRectMake(column1.bounds.size.width*1/5,
                                                                             column1.bounds.size.height/2,
                                                                             column1.bounds.size.width*4/5,
                                                                             column1.bounds.size.height/2)];

        column1_label2.backgroundColor = [UIColor greenColor];
        [column1 addSubview:column1_label2]; 

        [self.contentView addSubview: column1]; 




        column2 = [UIButton buttonWithType: UIButtonTypeCustom];


        column2.tag = 2;
        column2.autoresizingMask = 292;

        column2.backgroundColor = [UIColor greenColor];
        column2.frame = CGRectMake(self.contentView.bounds.size.width/2, 0, self.contentView.bounds.size.width/2,  self.contentView.bounds.size.height);

        column2_label1 = [[UILabel alloc] initWithFrame: CGRectMake(column2.bounds.size.width*1/5,
                                                                             0,
                                                                             column2.bounds.size.width*4/5,
                                                                             column2.bounds.size.height/2)];

        column2_label1.backgroundColor = [UIColor redColor];
        [column2 addSubview:column2_label1]; 

        column2_label2 = [[UILabel alloc] initWithFrame: CGRectMake(column2.bounds.size.width*1/5,
                                                                             column2.bounds.size.height/2,
                                                                             column2.bounds.size.width*4/5,
                                                                             column2.bounds.size.height/2)];

        column2_label2.backgroundColor = [UIColor greenColor];
        [column2 addSubview:column2_label2]; 


        [self.contentView addSubview: column2];
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

- (void)dealloc
{
    [super dealloc];
}

@end

UITableViewController中的用法:

   - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    // Return the number of rows in the section.
    return 40;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    MyCell * mycell2 = ((MyCell*)cell);
    if (cell == nil) {
        cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

        [mycell2.column1 addTarget:self action:@selector(column1Selected:) forControlEvents:UIControlEventTouchUpInside];
        [mycell2.column2 addTarget:self action:@selector(column1Selected:) forControlEvents:UIControlEventTouchUpInside];        
    }

    // Configure the cell...

    mycell2.column1_label1.text = @"column1_label1";
    mycell2.column1_label2.text = @"column1_label2";
    mycell2.column1.tag = indexPath.row*2;
    mycell2.column2_label1.text = @"column2_label1";
    mycell2.column2_label2.text = @"column2_label2";
    mycell2.column2.tag = indexPath.row*2 +1;
    return cell;
}

- (void) column1Selected: (id) sender
{

    UIAlertView *alert = [[ UIAlertView alloc]                          
                          initWithTitle: @" Alert"                          
                          message: [NSString stringWithFormat: @"button %d",((UIButton *) sender).tag]
                          delegate: nil                          
                          cancelButtonTitle: @" OK"                          
                          otherButtonTitles: nil];    
    [alert show] ;
    [alert release];
}

答案 1 :(得分:3)

在iOS6中,您可以使用UICollectionView

如果您需要iOS5支持,AQGridView是一个网格控件,可以为您提供所需的内容。