0

カスタム テーブルビュー セルを含むテーブルビューがあります。テーブルビューにデータをロードします。しかし、スクロールしようとすると空になります。このテーブルビューをこのような別のビューに追加しています。ボタンを押すとロードされます。

-(IBAction)chooseFirstController:(id)sender {
    UIViewController *nextController = [[FirstController alloc] initWithNibName:@"FirstController" bundle:nil];
    [self.contentView addSubview:nextController.view];

}

私のテーブルビューには、このメソッドがあります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
        static NSString *simpleTableIdentifier = @"StaffCustomCell";
        StaffCustomCell *cell = (StaffCustomCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
        if (cell == nil)
        {
            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"StafCustomCell" owner:self options:nil];
            cell = [nib objectAtIndex:0];
        }
        Staff *staff = [self.fetchedResultsController objectAtIndexPath:indexPath];

        cell.lblName.text = staff.name;
        cell.lblGeboortePlaats.text = staff.birthplace;
        cell.lblGeboorteDatum.text = staff.birthday;

       return cell;
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [self.fetchedResultsController.sections count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    NSInteger count = [sectionInfo numberOfObjects];


    return count;



}

- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    id <NSFetchedResultsSectionInfo> sectionInfo = self.fetchedResultsController.sections[section];

    return [sectionInfo name];
}

誰でも助けることができますか?

敬具。

編集

これが私のstaffCustomCell.mです。

#import "StaffCustomCell.h"

@implementation StaffCustomCell

@synthesize lblContract         = _lblContract;
@synthesize lblDebuut           = _lblDebuut;
@synthesize lblFunction         = _lblFunction;
@synthesize lblGeboorteDatum    = _lblGeboorteDatum;
@synthesize lblGeboortePlaats   = _lblGeboortePlaats;
@synthesize lblKinderen         = _lblKinderen;
@synthesize lblName             = _lblName;
@synthesize lblNationaliteit    = _lblNationaliteit;
@synthesize lblPartner          = _lblPartner;
@synthesize lblVorigeClubsS     = _lblVorigeClubsS;
@synthesize lblVorigeClubsT     = _lblVorigeClubsT;
@synthesize imgTrainer          = _imgTrainer;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        self.backgroundColor = [UIColor blackColor];
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}
4

2 に答える 2

0

問題は、スクロールすると、nextController のビューを追加したばかりなのでリロードされないことです。1 つの解決策は、tableview とそのデリゲート メソッドを同じクラスに追加し、viewdidLoad で非表示にすることです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    tableView.hidden = YES;
}

そしてIBActionで

tableView.hidden = NO;
[tableView reloadData];

どこかで使用した後、再び非表示にします。うまくいけば、これで問題が解決します。

于 2012-10-17T06:12:41.790 に答える
0

IBAction メソッドでは、nextController のプロパティを使用していないため、そのメソッドがスコープ外になるとすぐに割り当てが解除されます。nextController のプロパティ (strong と入力) を作成すると、問題が解決するはずです。

于 2012-10-17T00:15:49.203 に答える