0

到目前为止我所做的:

我正在使用 xcode 4.2。我创建了一个包含 ImageView 的 UITableView。UITableView 使用具有文件 MyTableViewController.m/.h 的类 MyTableViewController。我创建了一个名为 _bgimageview 的 IBOutlet 变量。然后在故事板中,在连接检查器中,我将 ImageView 连接到这个 _bgimageview 变量。在 MyTableviewController.m 的 viewDidLoad 函数中,我将背景图像设置为 _bgimageview。当我运行模拟器时,单击几个选项卡以访问 MyTableViewController,然后我会看到背景图像。到目前为止一切都很好。

问题

我也成功地构建了一个递归树,但问题是我在树的根级别之后丢失了背景图像。我想我知道为什么,但不知道如何解决。我在每次单击行时实例化一个新的 MyTableViewController,如下所示:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
        MyTableViewController *childView = [[MyTableViewController alloc] init];
        childView._menu = children; // an NSDictionary of children
        [self.navigationController pushViewController:childView animated:YES]; 
}

如前所述,我在 viewDidLoad 函数中为背景图像填充 IBOutlet 变量。但是该 IBOutlet 变量通过 Storyboard 连接链接到 ImageView。在根级别以下的树级别中,我以编程方式实例化新的 MyTableViewControllers,因此,我可能会丢失背景图像的 IBOutlet 变量与情节提要中提到的实际 UIImageView 之间的关系。

有人可以再次向我保证这是问题所在,以及在以分层方式使用时如何将背景图像添加到 MyTableViewController ?

4

1 回答 1

2
MyTableViewController *childView = [[MyTableViewController alloc] init];

此行创建视图控制器的新实例,而不参考情节提要。因此它不会连接您的任何插座 - 表格视图可能没问题,因为它是默认创建和连接的,但其他任何东西都不会连接。

您可以通过在 viewDidLoad 中记录您的图像视图出口来确认这一点——它将为零。

您应该通过将 segue 从表的行向下拖动到同一视图控制器的视图控制器对象来创建递归堆栈:

在此处输入图像描述

正如 Lvsti 在评论中指出的那样,您可以在prepareForSegue:sender:

于 2012-05-07T20:41:18.193 回答