TableView с 2 столбцами по строке, iphone / ipad - PullRequest
1 голос
/ 14 мая 2011

Может кто-нибудь сказать мне, как создать табличное представление с двумя ячейками по столбцам в Iphone SDK ??

в таком порядке:

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

С уважением

Ответы [ 2 ]

5 голосов
/ 14 мая 2011

В 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];
}
3 голосов
/ 04 мая 2012

В iOS6 вы можете использовать UICollectionView .

Если вам нужна поддержка iOS5 AQGridView - это элемент управления сеткой, который даст вам то, что вам нужно.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...