【问题标题】:IOS [UITableView reloadData] vs new instance of that UITableView class on ViewWillAppear parent classIOS [UITableView reloadData] 与 ViewWillAppear 父类上的 UITableView 类的新实例
【发布时间】:2013-04-25 05:31:52
【问题描述】:

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

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

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

家长

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

选项 2 在 viewDidLoad Parent 方法上实例化子控制器并在 Child viewWillAppear 方法调用 [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

【问题讨论】:

    标签: ios viewdidload reloaddata viewwillappear


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      在这种情况下,我宁愿不依赖父级中的viewWillAppearviewDidAppear。我通常通过在子级内部使用Protocolweak 引用来创建从父级到子级的引用。因此,当您需要实际更新父对象时,只需将新创建的对象传递给父对象即可。

      【讨论】:

      • 嗨,不是真的,当父母在他的 UITableView 中选择一行时,我想更新孩子。但我真的不知道最好的方法是每次我去孩子时创建一个新实例还是保留 1 个实例并重新加载数据。
      猜你喜欢
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      相关资源
      最近更新 更多