I have a generic UISplitViewController (UITableView in the RootViewController and other stuff in the detail view)
I have modified UITableViewCells in 2 ways:
- The rows have a height of 55
- The UITableViewCells contain both a UIImage and UILabel
There are 50 rows total
PROBLEM: When I launch the app, the first 13 rows (the ones that are visible) DO NOT DISPLAY. I get empty rows.
If I scroll away from the first 13 rows and then scroll back…THEY APPEAR.
Any thoughts on what I'm doing wrong?
Here's my relevant code (I omitted general stuff like dealloc).
////////// header file /////////////////////////
#import <UIKit/UIKit.h>
@class c_cell; // my custom UITableViewCell class (with cell height of "55")
@class DetailViewController;
@interface RootViewController : UITableViewController {
DetailViewController *detailViewController;
IBOutlet c_cell *cc;
NSArray *cell_names;
NSArray *cell_tlas;
}
@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;
@property (nonatomic, retain) IBOutlet c_cell *cc;
@property (nonatomic, retain) NSArray *cell_names;
@property (nonatomic, retain) NSArray *cell_tlas;
@end
///////////////// end header file /////////////////////
implementation file
#import "RootViewController.h"
#import "DetailViewController.h"
#import "c_cell.h"
@implementation RootViewController
@synthesize detailViewController;
@synthesize cc;
@synthesize cell_names;
@synthesize cell_tlas;
#pragma mark View lifecycle
- (void)viewDidLoad {
[super viewDidLoad];
self.clearsSelectionOnViewWillAppear = NO;
self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
}
- (void)viewWillAppear:(BOOL)animated {
if (!self.cell_names) {
self.cell_names = [NSArray arrayWithObjects:
@"123",
@"456",
@"789", nil]; // 50 records in total...not just 3 as shown here
}
if (!self.cell_tlas) {
self.cell_tlas = [NSArray arrayWithObjects:
@"aaa",
@"bba",
@"cca", nil]; // 50 records in total...not just 3 as shown here
}
}
#pragma mark Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section {
return 50;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 55;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
c_cell *cell = (c_cell *)[tableView dequeueReusableCellWithIdentifier:@"ccc"]; // c_cell is my custom cell class
if (!cell) {
[[NSBundle mainBundle] loadNibNamed:@"c_c开发者_开发问答ell" owner:self options:nil];
cell = self.cc;
}
NSString *cell_string = [self.cell_names objectAtIndex:indexPath.row];
NSString *cell_tla = [self.cell_tlas objectAtIndex:indexPath.row];
NSString *cell_image_name = [NSString stringWithFormat:@"%@.png", cell_tla];
cell.cell_image.image = [UIImage imageNamed:cell_image_name];
cell.cell_label.text = cell_string;
return cell;
}
@end
At the bottom of viewWillAppear, add [[self tableView] reloadData];
精彩评论