简体   繁体   English

TableView按行具有2个列,iphone / ipad

[英]TableView with 2 colums by row , iphone/ipad

Can anybody tell me how to create a tableview with two cells by colums in the Iphone SDK?? 谁能告诉我如何在Iphone SDK中通过列创建带有两个单元格的表格视图?

order in like this : 像这样订购:

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

Best regards 最好的祝福

In ios UITableView you can only have one column/cell. 在ios UITableView中,您只能有一个列/单元格。 If you want more propertyes, in a same cell you need to create a custom table view cell by subcalssing UITableViewCell. 如果需要更多属性,则需要在同一个单元格中通过对UITableViewCell进行子级创建来创建自定义表格视图单元格。 In interface builder you can customize the layout. 在界面构建器中,您可以自定义布局。 TUTORIAL: http://adeem.me/blog/2009/05/30/iphone-sdk-tutorial-part-6-creating-custom-uitableviewcell-using-interface-builder-uitableview/ 教程: http//adeem.me/blog/2009/05/30/iphone-sdk-tutorial-part-6-creating-custom-uitableviewcell-using-interface-builder-uitableview/

Concrete example for your problem: 您的问题的具体示例:

the .h file: .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

the .m file: .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

the usage in UITableViewController: 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];
}

In iOS6 you can use the UICollectionView . 在iOS6中,您可以使用UICollectionView

If you need iOS5 support AQGridView is a grid control that will give you what you are after. 如果您需要iOS5支持,则AQGridView是一个网格控件,它将为您提供所需的支持。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM