我必须在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
答案 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方法,具体取决于你的类层次结构。