2012-04-12 5 views
2

Я знаю, как создать табличное представление с одним столбцом и несколькими строками, но я не знаю, как создать табличное представление с несколькими строками и несколькими столбцами.Как создать табличное представление с несколькими строками и несколькими столбцами?

Может кто-нибудь мне помочь?

+0

Вы должны создать свой собственный tableviewcell, если вам нужно, это больше, чем один столбец – Buron

+0

@Buron, пожалуйста, предложите какой-либо учебник относительно моей проблемы? – kumar

ответ

0
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *cellIdentifier = @"MyCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil) { 
    // load cell from nib to controller's IBOutlet 
    [[NSBundle mainBundle] loadNibNamed:@"MyTableCellView" owner:self options:nil]; 
    // assign IBOutlet to cell 
    cell = myCell; 
    self.myCell = nil; 
    } 

    id modelObject = [myModel objectAtIndex:[indexPath.row]]; 

    UILabel *label; 
    label = (UILabel *)[cell viewWithTag:1]; 
    label.text = [modelObject firstField]; 

    label = (UILabel *)[cell viewWithTag:2]; 
    label.text = [modelObject secondField]; 

    label = (UILabel *)[cell viewWithTag:3]; 
    label.text = [modelObject thirdField]; 

    return cell; 
} 

я думаю, что этот код поможет UITableView не предназначен для m в конце колонны. Но вы можете имитировать столбцы, создавая собственный класс UITableCell. Создайте свою настраиваемую ячейку в Interface Builder, добавив элементы для каждого столбца. Дайте каждому элементу тег, чтобы вы могли ссылаться на него в своем контроллере.

Дайте контроллер выход для загрузки ячейки от вашего пера:

@property(nonatomic,retain)IBOutlet UITableViewCell *myCell; 

Затем в методе cellForRowAtIndexPath вашей таблицы зрения делегата, присвоить эти значения с помощью тега.

2

Это, как я сделал это:

#import <Foundation/Foundation.h> 

    @interface MyTableCell : UITableViewCell 

{ 
NSMutableArray *columns; 
} 

- (void)addColumn:(CGFloat)position; 

@end 

реализация:

#import "MyTableCell.h" 

#define LINE_WIDTH 0.25 

@implementation MyTableCell 

- (id)init 
{ 
self = [super init]; 
if (self) { 
    // Initialization code here. 
} 

return self; 
} 

- (void)addColumn:(CGFloat)position 
{ 
[columns addObject:[NSNumber numberWithFloat:position]]; 
} 

- (void)drawRect:(CGRect)rect 
{ 
CGContextRef ctx = UIGraphicsGetCurrentContext(); 
// Use the same color and width as the default cell separator for now 
CGContextSetRGBStrokeColor(ctx, 0.5, 0.5, 0.5, 1.0); 
CGContextSetLineWidth(ctx, LINE_WIDTH); 

for (int i = 0; i < [columns count]; i++) 
{ 
    CGFloat f = [((NSNumber*) [columns objectAtIndex:i]) floatValue]; 
    CGContextMoveToPoint(ctx, f, 0); 
    CGContextAddLineToPoint(ctx, f, self.bounds.size.height); 
} 

CGContextStrokePath(ctx); 

[super drawRect:rect]; 
} 

@end 

и последняя часть, cellForRowAtIndexPath

MyTableCell *cell = (MyTableCell *)[rankingTableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
cell    = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];