如何在viewDidLoad之前初始化UITableView?

时间:2014-11-13 05:19:18

标签: ios uitableview swift

我必须在UITableView内初始化我的viewDidLoad个实例,例如:

tableView1 = UITableView(frame: frame)

但是,当我尝试访问包含tableView1的视图控制器时,在UITableViewDataSource方法之前调用tableView: numberOfRowsInSection:的{​​{1}},并在{ {1}},我想引用viewDidLoad之类numberOfRowsInSection:

但是,如何在调用tableView1之前初始化if tableView == tableView1?如果我尝试在tableView1内初始化它,但仍然在viewDidLoad内引用它,则会导致错误:viewDidLoad因为它尚未初始化,因此其值为{{1 }}

我认为如果我使用故事板和numberOfRowsInSection:,我就没有问题。但现在我从我的代码中使用它们,所以我不确定如何处理这个问题。

更新

如果这不能像@coolcracker发布的那样完成,那么我该如何移植这个Objective-C代码呢?

fatal error: unexpectedly found nil while unwrapping an Optional value

3 个答案:

答案 0 :(得分:0)

根本不要使用Storyboard,只需声明并初始化您的tableview,如下所示

@interface ApplicationsPageGroups : UIViewController
{
  UITableView* tableView1; 
}

- (void)viewDidLoad 
{
   [super viewDidLoad];
   tableView1 = [[UITableView alloc] init];
   tableView1.frame = CGRectMake(10, 95, [UIScreen mainScreen].bounds.size.width-20, [UIScreen mainScreen].bounds.size.height-230);
   tableView1.delegate = self;
   tableView1.dataSource = self;
   tableView1.tableFooterView = [[UIView alloc] init] ;
   [self.view addSubview:tableView1];
   [self getTableData];
 }
 -(void) getTableData
{
   // after you get some array of data to fill the tableview
   [tableView1 reloadData];
}

现在覆盖所有UITableView委托和dataSource方法。

答案 1 :(得分:0)

只需添加

[tableView1 reloadData];

再次调用您的DataSource方法调用

答案 2 :(得分:0)

您可以覆盖视图控制器initWithFrame或initWithNibOrNil方法并初始化那里的tableView。

另外,您是否尝试在调用[super viewDidLoad]方法之前初始化表视图?我没有检查过,但是超类控制器可能在初始化器之前调用reload方法,具体取决于你的类层次结构。