0

ビューセルにカスタムuitableviewcellを含むカスタムuitableviewがあります。セルは2回目のロードでは表示されません。つまり、このビューから別のビューに移動して、このビューに戻るときです。

これが私のビューにテーブルをロードする方法です。

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

これは私が別の見方をする方法です

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

これは、カスタムテーブルビューでテーブルセルをロードする方法です。

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;

行が削除されていないようです。私のcellforrowatインデックスパスは増え続けています...

4

1 に答える 1

0

さて、UITableView を ViewController に追加するとします。手順は次のとおりです。

(1) コードまたはインターフェイス ビルダーのいずれかによって、UIViewController を作成しました。

(2) UITableView を作成し、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];

tableView を UIViewController に追加する理由があると確信しています (追加の UITableViewController を使用する理由はありません。UITableViewController を使用するだけでなく、UITableView を設定するだけではありません。

また、tableView を作成する場所にも注意してください。たとえば、init または viewDidLoad で作成し、UINavigationController を使用する場合、UINavigationController の戻るボタンを押しても、ViewDidLoad または init は呼び出されません。自分で試して、NSLogステートメントをテストしてください。

したがって、viewDidAppear または [tableView reloadData] を使用します。

編集:

UITableViewContoller を作成し、その UITableView をスーパー ビューから削除して (意味がありません)、UITableViewControllers ビュー (UITableView) を self.view に追加します。確かに、これはあなたがやろうとしていることではありません。

UIViewControllers と Views の理解を深めるために、Apple の View Programming ガイドを読むことをお勧めします。

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

于 2012-05-19T17:00:22.983 に答える