【问题标题】:Why is viewWillDisapper not called?为什么不调用 viewWillDisapper?
【发布时间】:2011-09-07 15:05:36
【问题描述】:

为什么在myViewController的导航栏中按下返回按钮时没有调用viewWillDisapper?

TheController *theController = [[TheController alloc] initWithStyle:UITableViewStylePlain];             
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:theController];
self.naviController = aNavigationController;
[aNavigationController release];
[theController release];
[self.view addSubview:naviController.view];

// 这是TheController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    MyViewController *myViewController = [[MyViewController alloc] init];           
    [self.navigationController pushViewController:myViewController animated:YES];
    [myViewController release];
}

// 这是 MyViewController.m。 MyViewConroller 是 UIViewController 的子类。

- (void)viewWillDisappear:(BOOL)animated {
    // I want to override back button behavior. But, this is not called.
}

也不调用viewWillAppear、viewDidAppear、viewDidDisappear、viewDidUnLoad。

【问题讨论】:

  • 您是否将 UINavigationController 的视图添加为其他视图的子视图?
  • MyViewController 真的有视图吗?
  • 我确实为 MyViewController 的父级添加了SubView。我编辑了那部分。
  • 因为 MyViewController 是 UIViewController 的子类,所以它有视图。除了这个问题,它工作正常。

标签: iphone


【解决方案1】:

如果您只想覆盖左侧导航栏按钮的行为,您可以简单地将 leftBarButtonItem 替换为具有自定义操作的按钮:

// Place this in you viewDidLoad method
UIBarButtonItem *customBack = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonSystemItemCancel target:self action:@selector(customAction)];
self.navigationItem.leftBarButtonItem = customBack;
[customBack release];

如果您愿意,还可以为 UIBarButtonItem 提供自定义视图。

【讨论】:

  • 让取消按钮看起来像返回按钮是不是很难?
  • 如果你只是想让按钮说“返回”,最简单的方法就是使用[[UIBarButtonItem alloc] initWithCustomView,并提供一个返回按钮的UIImageView。如果你想要更多的控制,这里有一个很好的解释 + 代码:idevrecipes.com/2011/01/12/…,它可以让你轻松自定义导航栏。
【解决方案2】:

你应该在你的父视图控制器中调用 viewWillAppear。

http://bit.ly/q9vQiu

【讨论】:

  • viewWillAppear 在父视图中也没有被调用。
猜你喜欢
  • 1970-01-01
  • 2016-07-15
  • 2020-03-28
  • 2019-03-18
  • 2011-05-04
  • 2019-11-04
  • 2016-10-27
  • 2018-05-24
  • 2013-08-12
相关资源
最近更新 更多