我有一个带有自定义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
}
答案 0 :(得分:0)
在您的IBAction方法中,您没有为nextController使用属性,因此只要该方法超出范围,它就会被释放。为nextController创建一个属性(类型为strong),这应该可以解决您的问题。
答案 1 :(得分:0)
问题是当你滚动时,它不会重新加载,因为你刚刚添加了nextController的视图。 一个解决方案是将tableview及其委托方法添加到同一个类中,并将其隐藏在viewdidLoad中。
- (void)viewDidLoad
{
[super viewDidLoad];
tableView.hidden = YES;
}
和IBAction
tableView.hidden = NO;
[tableView reloadData];
使用某处后再次隐藏它。 希望这能解决你的问题。