1

对我来说这看起来很简单,但我无法理解我犯了什么错误。我必须在我的 iPad 应用程序中单击行时打开一个弹出窗口。我已经完成了以下代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    popViewController *vc = [[popViewController alloc] initWithNibName:@"popViewController" bundle:nil];
    vc.preferredContentSize = CGSizeMake(500,500);
    vc.view.frame = CGRectMake(0, 0, 500, 500);

    UIPopoverController *healthPopOver = [[UIPopoverController alloc] initWithContentViewController:vc];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [healthPopOver presentPopoverFromRect:cell.bounds inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

执行最后一行时应用程序崩溃。我在网上搜索了很多页面,但我无法找到它的原因。我没有收到任何特定错误,只有主文件中的线程 1 错误。

我正在使用 iOS 7。

4

1 回答 1

1

尝试将您的 healthPopOverit 添加为您的类的成员,因为UIPopoverControllers必须保存在实例变量中。

在您的 .m 中将其定义为属性:

UIPopoverController *healthPopOver;

并改变:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    popViewController *vc = [[popViewController alloc] initWithNibName:@"popViewController" bundle:nil];
    vc.preferredContentSize = CGSizeMake(500,500);
    vc.view.frame = CGRectMake(0, 0, 500, 500);

    self.healthPopOver = [[UIPopoverController alloc] initWithContentViewController:vc];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [healthPopOver presentPopoverFromRect:cell.bounds inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
于 2013-09-26T08:08:44.383 回答