Разделите `UITableViewCell` на части - PullRequest
4 голосов
/ 09 февраля 2012

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

Как я могу это сделать?


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

{

static NSString *CellIdentifier = @"Cell";
myappAppDelegate *mydelegate=(myappAppDelegate *)[[UIApplication sharedApplication]delegate];

 database *objdata =[mydelegate.myarray objectAtIndex:indexPath.row];
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) 
{
     cell = [[[UITableViewCell alloc] 
     initWithStyle:UITableViewCellStyleSubtitle     
     reuseIdentifier:CellIdentifier] autorelease];

    cell.accessoryType = UITableViewCellAccessoryNone;



    if (indexPath.row == 0) 
    {
        UILabel *temp = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, 200, 44)];
        temp.text =@"Main Balance";  
        temp.backgroundColor = [UIColor clearColor];
       temp.font = [UIFont systemFontOfSize:19];
        [cell addSubview:temp];

        UILabel *temp1 = [[UILabel alloc] initWithFrame:CGRectMake(240, 0, 50, 44)];
        temp1.text =@"2000";  
        temp1.backgroundColor = [UIColor clearColor];
        temp1.font = [UIFont systemFontOfSize:19];
        [cell addSubview:temp1];

    else if(indexPath.row==1)
    {
        UILabel *temp = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 108, 44)];
        temp.text =@"Income";  
        temp.backgroundColor = [UIColor clearColor];
        temp.font = [UIFont systemFontOfSize:19];
       [cell addSubview:temp];

    }

    else 
    {
       UILabel *temp = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 108, 44)];
        temp.text =[NSString stringWithFormat:@"%d",objdata.amount];       
       temp.backgroundColor = [UIColor clearColor];
        temp.font = [UIFont systemFontOfSize:19];
        [cell addSubview:temp];


    }

enter code here

На главном экране я создаю текстовое поле One Main Blaance и две кнопки, такие как Income, Expense и One final display. Когда я нажимаю «Доход», он отображает другое представление, в котором «Добавить доход» в TextBox и одну кнопку «Добавить к основному балансу». Я набираю сумму дохода в этом TextBox, затем нажимаю «Сохранить», она сохраняется в базе данных. Я делаю то же самое для «Расхода», затем нажимаю Кнопка «Добавить к основному балансу» добавляет или вычитает сумму в текстовом поле основного баланса, которое я отображаю на главном экране. Затем нажмите кнопку «Окончательный показ» на главном экране, чтобы отобразить три метки «Доход», «Расход», «Главный баланс» в TableView.I получить значение в разделе «Доходы и расходы», но оно отображает только начальное значение, которое я ввел в базу данных во время разработки по запросу.

Мой вопрос: - предположим, что я добавлю 4 данных, тогда на финальном дисплее будут отображены все эти данные, даже если я добавлю больше данных, они также отобразятся на финальном дисплее .... Я надеюсь, что вы можете получить свою точку зрения ... пожалуйста, ведите меня, я так растерялся.

Ответы [ 4 ]

5 голосов
/ 09 февраля 2012

Используйте этот код, он вам поможет.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *CellIdentifier = @"ShowMoreCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    cell = [self getCellContentView:CellIdentifier];

    UILabel *lbl1 = (UILabel *)[cell viewWithTag:1];
    [lbl1 setText:@"Label1"];
    UILabel *lbl2 = (UILabel *)[cell viewWithTag:2];
    [lbl2 setText:@"Label3"];
    UILabel *lbl3 = (UILabel *)[cell viewWithTag:3];
    [lbl3 setText:@"Label3"];
    return cell;
}

- (UITableViewCell *)getCellContentView:(NSString *)cellIdentifier
{
    UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier] autorelease];
    cell.backgroundColor=[UIColor clearColor];

    CGRect lbl1Rect = CGRectMake(20, 5, 280, 30);
    CGRect lbl2Rect = CGRectMake(20, 35, 280, 30);
    CGRect lbl3Rect = CGRectMake(20, 70, 280, 30);


    UILabel *lbl1 = [[UILabel alloc] initWithFrame:lbl1Rect];
    lbl1.tag=1;
    lbl1.font=[UIFont fontWithName:@"Helvetica" size:13];
    lbl1.backgroundColor=[UIColor clearColor];
    [cell.contentView addSubview:lbl1];
    [lbl1 release];

    UILabel *lbl2 = [[UILabel alloc] initWithFrame:lbl2Rect];
    lbl2.tag=1;
    lbl2.font=[UIFont fontWithName:@"Helvetica" size:13];
    lbl2.backgroundColor=[UIColor clearColor];
    [cell.contentView addSubview:lbl2];
    [lbl2 release];

    UILabel *lbl3 = [[UILabel alloc] initWithFrame:lbl3Rect];
    lbl3.tag=1;
    lbl3.font=[UIFont fontWithName:@"Helvetica" size:13];
    lbl3.backgroundColor=[UIColor clearColor];
    [cell.contentView addSubview:lbl3];
    [lbl3 release];


    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}
1 голос
/ 09 февраля 2012

Вы можете добавить 3 ярлыка в каждую ячейку.И присвойте им значение в UITableView.Это единственный простой способ сделать это.

Вы должны определить метки в объявлении UITableViewCell.Как только это будет сделано, вы можете назначить там значения, где вы объявляете свой UITableView.

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

1 голос
/ 09 февраля 2012

, если вы используете UITableView, создайте раздел для всех данных и сделайте три строки в каждом разделе.

или

создать пользовательскую ячейку, в которой по три UILabels в каждой строке.

0 голосов
/ 10 февраля 2012

Вы можете добавить три uiviews, чтобы сделать

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