2012-12-19 17 views
7

Chcę wyświetlać różne dane z Internetu w moim widoku tabeli, ale nie mam sposobu, aby wyświetlić je w osobnych komórkach w jednej sekcji tabeli, czy mogę pomóc w wyświetleniu w jedna komórkajak dodać 5 różnych komórek niestandardowych w tableView

cell.textLabel.text=app.i_name; 

w drugiej komórce

cell.textLabel.text=app.i_phone; 

w trzeciej komórki

cell.textLabel.text=app.i_hours; 

w komórce dalej

cell.textLabel.text=app.i_address; 

w piątej komórce

cell.textLabel.text=app.i_email; 

moja komórka do wiersza o indeksie jest

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

    static NSString *CellIdentifier = @"Single Cell"; 
    SingleCell *cell =(SingleCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


    if (cell == nil) { 
     UIViewController *c = [[UIViewController alloc] initWithNibName:@"SingleCell" bundle:nil]; 
     cell = (SingleCell *) c.view; 
     //[c release]; 

    } 
appDC * application = [dataArray objectAtIndex:[indexPath row]]; 

     //cell.namelbl.text=application.application_name; 


return cell; 
} 
+0

mi pomóc? – NullData

+2

IMHO, jeśli zaakceptujesz jeszcze kilka odpowiedzi, uzyskasz o wiele więcej pomocy. To było moje doświadczenie z SO. –

+1

Pytasz również, jak utworzyć 5 różnych niestandardowych komórek lub jak zmienić dane za pomocą "UITableViewCells" "iOS"? –

Odpowiedz

5

Spróbuj kod:

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

    static NSString *CellIdentifier = @"Single Cell"; 
    SingleCell *cell =(SingleCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


    if (cell == nil) { 
     UIViewController *c = [[UIViewController alloc] initWithNibName:@"SingleCell" bundle:nil]; 
     cell = (SingleCell *) c.view; 
     //[c release]; 

    } 
    appDC * application = [dataArray objectAtIndex:[indexPath row]]; 

    //cell.namelbl.text=application.application_name; 
    if (indexPath.row == 0) 
    { 
     cell.textLabel.text=application.i_name; 
    } 
    else if (indexPath.row == 1) 
    { 
     cell.textLabel.text = application.i_iphone; 
    } 
    else if (indexPath.row == 2) 
    { 
     cell.textLabel.text = application.i_hours; 
    } 
    else if (indexPath.row == 3) 
    { 
     cell.textLabel.text = application.i_address; 
    } 
    else 
    { 
     cell.textLabel.text = application.i_email; 
    } 



    return cell; 
} 

nadzieję, że ta odpowiedź pomoże. Pozdrawiam

+0

już wypróbowałem to to nie działa to tylko daj mi pierwszą komórkę :( – NullData

+0

Czy mógłbyś spróbować ponownie? Nie użyłem tego samego obiektu, aby przekazać wartość do textLabel Więc, czy jesteś pewien, że twoja właściwość obiektu jest typu NSString? – IKQ

+3

Wierzę, że osoba pytająca próbuje uzyskać wszystkie dane z każdego elementu w tablicy w jedną komórkę ... Zakładam, że powodem było to, że dała mu tylko pierwszą komórkę ponieważ jego tablica zawiera tylko jeden element, a gdy aplikacja próbuje wypełnić tabelę, daje mu tylko pierwszą komórkę, z pewnością trzeba utworzyć niestandardową komórkę, aby pomieścić wszystkie dane w obiekcie "aplikacji" wyodrębnionym z array "dataArray" Sprawdź ten link http: // stackoverflow.com/questions/4917027/ios-steps-to-create-custom-uitableviewcell-with-xib-file –

1

Powinien działać przykład kodu IKQ. Ale proponuję wypróbować moją bibliotekę TableKit. W ten sposób kod będzie bardziej przejrzysty i elegancki:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    TKStaticCell* nameCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"Name" detailText:app.i_name]; 
    TKStaticCell* phoneCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"Phone" detailText:app.i_phone]; 
    TKStaticCell* hoursCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"Hours" detailText:app.i_hours]; 
    TKStaticCell* addressCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"Address" detailText:app.i_address]; 
    TKStaticCell* emailCell = [TKStaticCell cellWithStyle:UITableViewCellStyleValue1 text:@"email" detailText:app.i_email]; 
    TKSection* section = [TKSection sectionWithCells:nameCell, phoneCell, hoursCell, addressCell, emailCell, nil]; 
    self.sections = [NSArray arrayWithObject:section]; 
} 

Również biblioteka pozwala na zdefiniowanie niestandardowego komórkę zamiast TKStaticCell.

2

Rozwiązałem to pytanie w ten sposób kod dzięki dla wszystkich, dając sugestię

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

    static NSString *CellIdentifier = @"CellForInfo"; 
    CellForInfo *cell =(CellForInfo *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


    if (cell == nil) { 
     UIViewController *c = [[UIViewController alloc] initWithNibName:@"CellForInfo" bundle:nil]; 
     cell = (CellForInfo *) c.view; 
     //[c release]; 



    } 

    appDC * application = [dataArray objectAtIndex:0]; 
    if (indexPath.row == 0) 
    { 
     cell.lblinfo.text=application.i_name; 
    } 
    if (indexPath.row == 1) 
    { 
     cell.lblinfo.text = application.i_phone; 
    } 
    if (indexPath.row == 2) 
    { 
     cell.lblinfo.text = application.i_hours; 
    } 
    if (indexPath.row == 3) 
    { 
     cell.lblinfo.text = application.i_address; 
    } 
    if (indexPath.row == 4) 
    { 
     cell.lblinfo.text = application.i_email; 
    } 



    return cell; 
} 
-1
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    [self tableInfo]; 
} 


- (void) tableInfo 
{ 

    NSArray *keysArray = @[@"CampaignsName",@"BusinessName",@"BusinessType",@"CampaignsType",@"Distance",@"Daysleft",@"CampaignImage",]; 

    NSArray *valuesArray1 =[NSArray arrayWithObjects:@"5 % OFF ",@"Coffe Shop",@"1",@"1",@"0.10 Miles",@"5 days Left",@"b2.png", nil]; 

    NSArray *valuesArray2 = [NSArray arrayWithObjects:@"win $2 for you & charity ",@"Red Tommato",@"2",@"2",@"20 Miles",@"2 days Left",@"b1.png", nil]; 

    NSArray *valuesArray3 = [NSArray arrayWithObjects:@"Buy dogs food & get a one more",@"Pet Care",@"3",@"3", @"30 Miles",@"10 days Left",@"b2.png", nil]; 

    NSArray *valuesArray4 =[NSArray arrayWithObjects:@"win $2 for you & charity ",@"Red Tommato",@"1",@"1",@"0.10 Miles",@"7 days Left",@"b2.png", nil]; 



    NSDictionary *dict1 = [NSDictionary dictionaryWithObjects:valuesArray1 forKeys:keysArray]; 

    NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:valuesArray2 forKeys:keysArray]; 

    NSDictionary *dict3 = [NSDictionary dictionaryWithObjects:valuesArray3 forKeys:keysArray]; 

    NSDictionary *dict4 = [NSDictionary dictionaryWithObjects:valuesArray4 forKeys:keysArray]; 



    self.tableArray = [[NSArray alloc]initWithObjects:dict1,dict2,dict3,dict4,dict3,dict1,dict4,dict2,nil]; 
    NSLog(@"Array %@",tableArray); 
    [self.tableObj reloadData]; 
} 

#pragma mark table view datasource 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 

} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [self.tableArray count]; 
} 

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

    UITableViewCell *cell = [self tableCustomView:tableView cellForRowAtIndexPath:indexPath]; 
    return cell; 
} 

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



    static NSString *CellIdentifier1 = @"CustomCellIdentifier"; 
    static NSString *CellIdentifier2 = @"CustomCellIdentifier2"; 


    if (indexPath.row % 2 != 0) 
    { 
     CustomCell2 *cell2 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2]; 
     if (cell2 == nil) 
     { 

      NSArray *topObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell2" owner:self options:nil]; 
      cell2 = [topObjects objectAtIndex:0]; 
     } 


     id object = [self.tableArray objectAtIndex:indexPath.row]; 


     cell2.CampaignsNameLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignsName"]]; 
     cell2.BusinessNameLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"BusinessName"]]; 
     cell2.DistanceLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"Distance"]]; 
     cell2.DaysleftLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"Daysleft"]]; 

     cell2.cellBackImg.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignImage"]]]; 


     int businessType = [[NSString stringWithFormat:@"%@",[object valueForKey:@"BusinessType"]] integerValue]; 

     NSLog(@": %d",businessType); 

     switch (businessType) 
     { 


      case 1: 

       cell2.cellBusinessTypeImg.image = [UIImage imageNamed:@"[email protected]"]; 

       break; 
      case 2: 

       cell2.cellBusinessTypeImg.image = [UIImage imageNamed:@"BTY.png"]; 

       break; 
      case 3: 

       cell2.cellBusinessTypeImg.image = [UIImage imageNamed:@"t1.png"]; 

       break; 

      default: 
       break; 
     } 


     int CampaignsType = [[NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignsType"]] integerValue]; 

     switch (CampaignsType) 
     { 

      case 1: 

       cell2.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t3.png"]; 

       break; 
      case 2: 

       cell2.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t2.png"]; 

       break; 
      case 3: 

       cell2.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t1.png"]; 

       break; 

      default: 
       break; 
     } 

     mainCell = cell2 ; 


    } 

    else 
    { 
     CustomCell1 *cell1 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1]; 
     if (cell1 == nil) 
     { 

      NSArray *topObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell1" owner:self options:nil]; 
      cell1 = [topObjects objectAtIndex:0]; 
     } 


     id object = [self.tableArray objectAtIndex:indexPath.row]; 


     cell1.CampaignsNameLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignsName"]]; 
     cell1.BusinessNameLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"BusinessName"]]; 
     cell1.DistanceLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"Distance"]]; 
     cell1.DaysleftLbl.text = [NSString stringWithFormat:@"%@",[object valueForKey:@"Daysleft"]]; 

     cell1.cellBackImg.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignImage"]]]; 


     int businessType = [[NSString stringWithFormat:@"%@",[object valueForKey:@"BusinessType"]] integerValue]; 

     NSLog(@": %d",businessType); 

     switch (businessType) 
     { 


      case 1: 

       cell1.cellBusinessTypeImg.image = [UIImage imageNamed:@"[email protected]"]; 

       break; 
      case 2: 

       cell1.cellBusinessTypeImg.image = [UIImage imageNamed:@"BTY.png"]; 

       break; 
      case 3: 

       cell1.cellBusinessTypeImg.image = [UIImage imageNamed:@"t1.png"]; 

       break; 

      default: 
       break; 
     } 


     int CampaignsType = [[NSString stringWithFormat:@"%@",[object valueForKey:@"CampaignsType"]] integerValue]; 

     switch (CampaignsType) 
     { 

      case 1: 

       cell1.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t3.png"]; 

       break; 
      case 2: 

       cell1.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t2.png"]; 

       break; 
      case 3: 

       cell1.cellOverLayBusinessTypeImg.image = [UIImage imageNamed:@"t1.png"]; 

       break; 

      default: 
       break; 
     } 

     mainCell = cell1 ; 
    } 


    return mainCell; 

    NSLog(@"Index Path is :%d %d", indexPath.section,indexPath.row); 
} 
0

można użyć dowolnego jeden kod dla krótkim

  CellForInfo * cellForInfo = (CellForInfo *)[tableView dequeueReusableCellWithIdentifier:nil]; 

      if (cellForInfo ==nil) { 
       NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CellForInfo" owner:self options:nil]; 
       cellForInfo = [nib objectAtIndex:0]; 
      } 
Powiązane problemy