2012-12-19 1 views
7

Voglio mostrare diversi dati dal web nella mia tableview ma non riesco a mostrare come visualizzarli in celle separate in una sezione di un tavolo, nessuno può aiutarmi a mostrare in una cellacome aggiungere 5 diverse celle personalizzate in tableView

cell.textLabel.text=app.i_name; 

nella seconda cella

cell.textLabel.text=app.i_phone; 

nella terza cella

cell.textLabel.text=app.i_hours; 

nella cella indietro

cell.textLabel.text=app.i_address; 

in quinta cella

cell.textLabel.text=app.i_email; 

mia cella per riga in indice è come

- (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

uno aiutarmi? – NullData

+2

IMHO se accetti qualche risposta in più avrai molto più aiuto. Questa è stata solo la mia esperienza su SO. –

+1

Inoltre, stai chiedendo come creare 5 diverse celle personalizzate o come modificare i dati con UITableViewCells "stock iOS"? –

risposta

5

provare questo codice:

- (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; 
} 

Speranza questa risposta aiuterà. Cheers

+0

ho già provato questo non funziona funziona solo dammi prima cella :( – NullData

+0

Puoi provare di nuovo? Io non ho usato lo stesso oggetto per passare il valore a textLabel Quindi, sei sicuro che la proprietà dell'oggetto sia il tipo di NSString? – IKQ

+3

Credo che il richiedente stia cercando di ottenere tutti i dati da ciascun elemento dell'array in una cella ... Presumo che il motivo per cui questo gli abbia dato solo la prima cella è perché il suo array ha solo un elemento in esso e quando l'app tenta di popolare la tabella gli dà solo la prima cella. Una cella personalizzata dovrà sicuramente essere creata per ospitare tutti i dati nell'oggetto "applicazione" che viene estratto dal array "dataArray" Controlla questo link http: // stackoverflow.it/questions/4917027/ios-steps-to-create-custom-uitableviewcell-with-xib-file –

1

L'esempio di codice di IKQ dovrebbe funzionare. Ma suggerisco di provare la mia libreria TableKit. In questo modo il codice sarà più chiaro ed elegante:

- (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]; 
} 

Anche la libreria consente di definire cella personalizzato al posto di TKStaticCell.

2

ho risolto questo problema facendo questo codice grazie per tutto dando suggerimento

- (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

È possibile utilizzare questo codice per breve

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

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