当我想滚动时,Tableview变空

时间:2012-10-16 19:16:19

标签: objective-c ios uitableview uiview uiviewcontroller

我有一个带有自定义tableview单元格的tableview。它使用数据加载tableview。但是当我尝试滚动时,它会变空。我将此tableview添加到另一个这样的视图中。按下按钮后会加载它。

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

}

对于我的tableview,我有这些方法。

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

2 个答案:

答案 0 :(得分:0)

在您的IBAction方法中,您没有为nextController使用属性,因此只要该方法超出范围,它就会被释放。为nextController创建一个属性(类型为strong),这应该可以解决您的问题。

答案 1 :(得分:0)

问题是当你滚动时,它不会重新加载,因为你刚刚添加了nextController的视图。 一个解决方案是将tableview及其委托方法添加到同一个类中,并将其隐藏在viewdidLoad中。

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

和IBAction

tableView.hidden = NO;
[tableView reloadData];

使用某处后再次隐藏它。 希望这能解决你的问题。