我将自定义UITableViewController放入UIAlertView。我填写了表格,但内容没有出现。
- (void)addC { // <== This is get called first
//Create alertView
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"" message:@"" delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil];
//PopUpTableViewController is a subclass of UITableViewController
PopUpTableViewController *popUpViewController = [[PopUpTableViewController alloc] initWithStyle:UITableViewStylePlain];
// ..
popUpViewController.array = ...;
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(10, 8, 300, MIN(8*44, categoricalVariables.count*44)) style:UITableViewStylePlain];
popUpViewController.tableView = tableView;
tableView.delegate = popUpViewController;
tableView.dataSource = popUpViewController;
popUpViewController.tableView.tag = 1;
[alertView addSubview:popUpViewController.tableView];
//Show alertView
[alertView show];
}
- (void)willPresentAlertView:(UIAlertView *)alertView {
// This method is an UIAlertViewDelegate method.
// I set here the sizes of alertView and tableView
UITableView *tableView = (UITableView *)[alertView viewWithTag:1];
CGRect r0 = tableView.frame;
r0.size.width = alertView.frame.size.width - 20;
tableView.frame = r0;
CGRect r = alertView.frame;
r.size.height = tableView.frame.size.height + 24;
alertView.frame = r;
}
答案 0 :(得分:0)
尝试在willPresentAlertView中重新加载tableview 顺便说一句,如果PopUpTableViewController是UITableViewController的子类,我认为不需要再次设置tableview及其委托和数据源。因为所有这些都会在你分配和初始化时自动设置。
答案 1 :(得分:0)
使用UIActionSheet将UITableView嵌套到UIAlertView中是更好的方法。