2012-05-19 3 views
0

J'ai une vue personnalisée avec uitableviewcell personnalisée dans ma cellule de vue. La cellule ne s'affiche pas en deuxième charge. Autrement dit, quand je vais de cette vue à une autre et de retour à cette vue.Personnelle UITableViewCell n'apparaît pas au deuxième chargement

Voici comment je charge ma table à mon avis.

CropTableViewController *cropTblViewCon = [[CropTableViewController alloc]init]; 
self.cropTableViewController = cropTblViewCon; 
cropTableViewController.view.frame = cropTblView.frame; 
[cropTblView removeFromSuperview]; 
[self.view addSubview:cropTableViewController.view]; 
self.cropTblView = cropTableViewController.tableView; 

Voilà comment je vais une autre vue

AppDelegate_iPhone *appDelegate = [[UIApplication sharedApplication] delegate]; 
AddPestReportStepOne *report = [[AddPestReportStepOne alloc]init]; 
[appDelegate.navCon pushViewController:report animated: YES]; 
[report release]; 

Voici comment je charge ma cellule de table à mon avis de la table personnalisée.

static NSString *CellIdentifier = @"CustomCropCell";  
CustomCropCell *cell = (CustomCropCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
tableView.scrollEnabled = NO; 
// tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    NSArray *topLevelObjects = [[NSBundle mainBundle] 
           loadNibNamed:@"CustomCropCell" owner:nil options:nil]; 

    for (id currentObject in topLevelObjects){ 

     if ([currentObject isKindOfClass:[UITableViewCell class]]) { 
      cell = (CustomCropCell *) currentObject; 
      break; 
     } 
    } 
} 
//if (counter<6) { 

CropEntity *crop = [[CropEntity alloc] init]; 
crop=[ cropList objectAtIndex:counter]; 

NSString *imgStr = [NSString stringWithFormat:@"%@%@%@",domainName,cropImagePath, [crop cropImage]];  
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imgStr]]]; 
CGSize size = CGSizeMake(80, 80); 
[cell setBackgroundColor: [UIColor clearColor]]; 
image = [Utilities scale:image toSize:size ]; 
[cell.columnOne setTag: [[crop cropId] integerValue] ]; 
[cell.columnOne setTitle:[crop cropName] forState:UIControlStateNormal]; 
[cell.columnOne setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
[cell.columnOne setTitleEdgeInsets:UIEdgeInsetsMake(0.0, -image.size.width, -75.0, 0.0)]; // Left inset is the negative of image width. counter = counter+ 1; 
[cell.columnOne setImage:image forState:UIControlStateNormal]; 
[cell.columnOne setImageEdgeInsets:UIEdgeInsetsMake(-15.0, 0.0, 0.0, -cell.columnOne.titleLabel.bounds.size.width)]; // Right inset is the negative of text bounds width. 
[cell.columnOne setBackgroundColor: [UIColor clearColor]]; 
counter = counter + 1; 

Il semble que les lignes ne sont pas supprimées. Mon chemin d'index cellforrowat continue d'augmenter ...

Répondre

0

Bon, je suppose que vous voulez ajouter un UITableView à un ViewController. Voici les étapes pour cela:

(1) Vous avez créer un UIViewController, que ce soit par le constructeur de code ou de l'interface

(2) Créer un UITableView, et l'ajouter à votre UIViewController

UITableView *tableView = [[UITableView alloc] 
          initWithFrame:CGRectMake(0, 0, 320, 440) 
          style:UITableViewStylePlain]; 

// Set up the tableView delegate and datasource 

[self.view addSubview:tableView]; 

[tableView release]; 

Je suis sûr qu'il y a une raison pour laquelle vous ajoutez la tableView à un UIViewController (il n'y a pas de raison d'avoir un UITableViewController supplémentaire.) Si non, utilisez un UITableViewController, et configurez un UITableView

Aussi, gardez à l'esprit où tu crées e le tableauView at. Par exemple, si vous le créez dans init ou viewDidLoad et à l'aide d'un UINavigationController, lorsque vous cliquez sur le bouton Précédent de UINavigationController, ViewDidLoad ou init n'est pas appelé. Essayez-le vous-même, mettez une instruction NSLog à tester. Donc utilisez soit viewDidAppear ou [tableView reloadData];

Edit:

Pensez à votre code que vous créez un UITableViewContoller vous retirez son UITableView de c'est super vue (n'a pas de sens), puis vous ajoutez la vue UITableViewControllers (le UITableView) à self.view qui est Je devine un UIViewController. Cela ne peut certainement pas être ce que vous essayez de faire.

Je vous recommande de lire le guide de programmation View d'Apple pour une meilleure compréhension des contrôleurs et vues UIView.

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaViewsGuide/Introduction/Introduction.html

Questions connexes