0

我是 iOS 编程新手,我为 iPad 创建了第一个应用程序,它可以处理多个视图。由于我不知道如何管理内存和对象(应用程序没有崩溃,但我试图阻止它们)我有这个问题。

一般来说,在导航到子视图并返回父视图或父视图的父视图等时,更新视图信息会更好:

选项 1 在 ParentviewWillAppear方法上实例化 Child 控制器

家长

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.supportDetailController = [[BIDSupportDetail alloc] init];
}

选项 2 在 vi​​ewDidLoad Parent 方法上实例化子控制器和 ChildviewWillAppear方法调用[self.tablewView reloadData]

家长

-(void)viewDidLoad
{
    [super viewDidLoad];
    self.supportDetailController = [[BIDSupportDetail alloc] init];
}

孩子

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.tablewView reloadData]
}

我使用 iOS 6.1 和 Xcode 4.6.2

4

2 回答 2

0

如果我理解正确,您想在孩子做某事时更新您的父母。例如:

  1. 父级具有 的列表Bars,这些列表显示在 上UITableView
  2. 孩子允许您创建一个Bar.
  3. 当您创建Bar,并且您返回到 Parent 时,Parent 将在UITableView.

在这种情况下,我宁愿不依赖viewWillAppear或不依赖viewDidAppear父级。我通常通过在子级内部使用 aProtocol和一个weak引用来创建从父级到子级的引用。因此,当您需要实际更新父对象时,只需将新创建的对象传递给父对象。

于 2013-04-25T06:15:35.160 回答
0

如果您不确定内存管理,请使用ARC。在实际需要时实例化子视图控制器。无需在viewDidLoadviewWillAppear如果它是一种导航中实例化它。假设如果您有一个表格视图,并且当您选择一个单元格时导航到DetailViewController(正常场景),然后从didSelectRowAtIndexPath.
通常, childVCviewWillAppear的 reloadTableView 在返回时不需要在 parentVC 中使用来刷新视图,只需要使用它,因为它在时间方面是昂贵的。

于 2013-04-25T05:45:01.457 回答