繁体   English   中英

每次在堆栈上推送视图控制器时,如何从appDelegate重新加载视图控制器?

[英]How can I reload view controllers from the appDelegate each time I push one on the stack?

目前我的应用程序有一个导航屏幕,允许用户选择其他视图。 单击时,navController只会按下相关的特定视图控制器。 如果我再也不会返回相同的视图并期望重新加载该视图,则该方法非常有用。

在下面的代码中,当请求时,我推送了一个视图控制器。

- (void)optionClicked:(NSString *)optionName
{
  if ([@"First" isEqualToString:optionName]) {
    [navController pushViewController:firstController animated:YES];
  } else if ([@"Next" isEqualToString:optionName]) {
    [navController pushViewController:nextController animated:YES];
  }
}

完成视图后,我只需从堆栈中弹出它。 但是下一次用户从菜单中选择相同选项时,它不会“干净”加载,这就是我的问题所在。每次将视图控制器推入堆栈时,如何重新加载视图控制器?

您必须重新初始化viewcontroller。

  if ([@"First" isEqualToString:optionName]) {
    if (firstController) 
    { [firstController release]; } // assuming you've got a retain on it.
    firstController = [[MyViewControllerSubclass alloc] init];
    [navController pushViewController:firstController animated:YES];
  } 

在这种情况下,我建议使用保留的属性。 @property (nonatomic, retain) MyViewControllerSubclass *firstController;

这样你就可以使用self.firstController = [[[MyViewControllerSubclass alloc] init] autorelease]; 内存管理主要是为你完成的。 (尽管您仍然必须在dealloc中释放。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM