Как добавить более 2 или более меток в строке сгруппированного табличного представления - PullRequest
0 голосов
/ 21 мая 2011

Как добавить более двух меток в строку сгруппированного табличного представления?

Я использовал следующий код, но он отображает только последнюю метку

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

    NSArray *listData =[self.tableContents objectForKey:[self.sortedKeys objectAtIndex:[indexPath section]]];

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];


    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:SimpleTableIdentifier] autorelease];

    }

    NSUInteger row = [indexPath row];
    cell.textLabel.text = [listData objectAtIndex:row];


    switch(indexPath.section)
    {

        case 0:
            switch (indexPath.row) 
        {
            case 0:
            {

                lbl = [[[UILabel alloc] initWithFrame:CGRectMake(0,0,50, 10)] autorelease];
                cell.accessoryView = lbl;
                cell.textLabel.text=@"Company:"; 
                lbl.tag = indexPath.row;


                UILabel* lbl1 = [[[UILabel alloc] initWithFrame:CGRectMake(0,12,50, 10)] autorelease];
                cell.accessoryView = lbl1;
                cell.textLabel.text=@"Account:";
                lbl1.tag = indexPath.row;


                UILabel* lbl2 = [[[UILabel alloc] initWithFrame:CGRectMake(0,24,50, 10)] autorelease];
                cell.accessoryView = lbl2;
                cell.textLabel.text=@"Other ID:";
                lbl2.tag = indexPath.row;
            } 
                break;
            case 1: 
            {  /*
                lbl = [[[UILabel alloc] initWithFrame:CGRectMake(0,0,50, 10)] autorelease];
                cell.accessoryView = lbl;
                cell.textLabel.text=@"Add New Contact:";  
                */
            } 
                break;

}
}

Чтобы увеличитьвысота строки, я использую следующий код:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch(indexPath.section)
    {
        case 0:
        {
            switch(indexPath.row)
            {
                case 0:
                {
                    return 100;
                }
                    break;

                case 1:
                {
                    return 40;
                }
                    break;

                case 2:
                {
                    return 40;
                }
                    break;

                case 3:
                {
                    return 40;
                }
                    break;

                default:
                {
                    return 15;
                }

            }
        }
            break;

}
}}

1 Ответ

1 голос
/ 21 мая 2011

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

Первое, что мы сделаем, это создадим кастомную ячейку. Щелкните правой кнопкой мыши по классам и добавьте новый подкласс UITableViewCell. Назовите как «CustomCell». Теперь откройте CustomCell.h и добавьте следующий код:

@interface CustomCell : UITableViewCell {

UILabel *primaryLabel;

UILabel *secondaryLabel;

UIImageView *myImageView;

}

@property(nonatomic,retain)UILabel *primaryLabel;

@property(nonatomic,retain)UILabel *secondaryLabel;

@property(nonatomic,retain)UIImageView *myImageView;

@end

синтезирует все три элемента в CustomCell.m, поскольку мы собираемся получить доступ к этим элементам из других классов.

@synthesize primaryLabel,secondaryLabel,myImageView;

Откройте CustomCell.m и добавьте следующий код

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {

if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {

// Initialization code

primaryLabel = [[UILabel alloc]init];

primaryLabel.textAlignment = UITextAlignmentLeft;

primaryLabel.font = [UIFont systemFontOfSize:14];

secondaryLabel = [[UILabel alloc]init];

secondaryLabel.textAlignment = UITextAlignmentLeft;

secondaryLabel.font = [UIFont systemFontOfSize:8];

myImageView = [[UIImageView alloc]init];

[self.contentView addSubview:primaryLabel];

[self.contentView addSubview:secondaryLabel];

[self.contentView addSubview:myImageView];

}

return self;

}


set the frames in layoutsubviews

    - (void)layoutSubviews {

[super layoutSubviews];

CGRect contentRect = self.contentView.bounds;

CGFloat boundsX = contentRect.origin.x;

CGRect frame;

frame= CGRectMake(boundsX+10 ,0, 50, 50);

myImageView.frame = frame;

frame= CGRectMake(boundsX+70 ,5, 200, 25);

primaryLabel.frame = frame;

frame= CGRectMake(boundsX+70 ,30, 100, 15);

secondaryLabel.frame = frame;

}

теперь перейдите на tableViewController и просто поиграйте со своими ярлыками

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @”Cell”;

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

}

// Set up the cell…

switch (indexPath.row) {

case 0:

cell.primaryLabel.text = @"Meeting on iPhone Development";

cell.secondaryLabel.text = @"Sat 10:30";

cell.myImageView.image = [UIImage imageNamed:@"meeting_color.png"];

break;

case 1:

cell.primaryLabel.text = @"Call With Client";

cell.secondaryLabel.text = @"Planned";

cell.myImageView.image = [UIImage imageNamed:@"call_color.png"];

break;

case 2:

cell.primaryLabel.text = @"Appointment with Joey";

cell.secondaryLabel.text = @"2 Hours";

cell.myImageView.image = [UIImage imageNamed:@"calendar_color.png"];

break;

case 3:

cell.primaryLabel.text = @"Call With Client";

cell.secondaryLabel.text = @"Planned";

cell.myImageView.image = [UIImage imageNamed:@"call_color.png"];

break;

case 4:

cell.primaryLabel.text = @"Appointment with Joey";

cell.secondaryLabel.text = @"2 Hours";

cell.myImageView.image = [UIImage imageNamed:@"calendar_color.png"];

break;

default:

break;

}

return cell;

}

конечно, измените имя изображения //, ....... с уважением

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