UITableView内容未出现在UIAlertView中

时间:2013-02-19 21:49:26

标签: iphone ios popup uitableview uialertview

我将自定义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;     
}

2 个答案:

答案 0 :(得分:0)

尝试在willPresentAlertView中重新加载tableview 顺便说一句,如果PopUpTableViewController是UITableViewController的子类,我认为不需要再次设置tableview及其委托和数据源。因为所有这些都会在你分配和初始化时自动设置。

答案 1 :(得分:0)

使用UIActionSheet将UITableView嵌套到UIAlertView中是更好的方法。