0

我有一个通用的UISplitViewController(RootViewController 中的 UITableView 和详细视图中的其他内容)

我以两种方式修改了 UITableViewCells:

  1. 行的高度为 55
  2. UITableViewCells 包含 UIImage 和 UILabel

总共有 50 行

问题: 当我启动应用程序时,前 13 行(可见的行)不显示。我得到空行。

如果我从前 13 行滚动,然后向后滚动……他们出现了。

对我做错了什么有任何想法吗?

这是我的相关代码(我省略了一般的东西,比如 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 /////////////////////

执行文件

  #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_cell" 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
4

1 回答 1

0

在 viewWillAppear 的底部,添加[[self tableView] reloadData];

于 2010-06-19T00:45:37.497 回答