UITableViewCell数据最初在UISplitViewController中没有显示*

时间:2010-06-18 18:02:47

标签: objective-c uitableview uisplitviewcontroller

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

我已经通过两种方式修改了UITableViewCells:

  1. 行的高度为55
  2. UITableViewCells包含UIImage和UILabel
  3. 共有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
    

1 个答案:

答案 0 :(得分:0)

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