-1

如果 iPhone 的方向发生变化,首先调用哪个方法?

-(void)viewWillAppear:(BOOL)animated
- (void)viewDidLoad

如果我通过导航控制器的后退按钮回到前一个视图控制器,这些方法会被调用吗?如果按哪个顺序调用?

4

2 回答 2

1

如果你的类是 UIViewController 你可以使用这个方法:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

在 UIViewController 之外,您可以添加侦听器以获取旋转通知。

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter] addObserver:self     selector:@selector(orientationdidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
于 2013-09-10T22:37:44.590 回答
0

viewDidLoad每当视图加载时调用。通常,如果您访问控制器的视图或将其放在屏幕上,就会发生这种情况。

当它出现时(即被推到 a 上UINavigationController),该viewWillAppear:方法被调用(然后是 viewDidAppear:)。

可能会发生多次加载视图的情况(例如在内存不足的情况下或视图以其他方式处理)。它可能发生,但不是必须的。viewWillAppear:无论如何都会再次被调用(如果适用,它会在之后调用viewDidLoad)。

反过来就没有多大意义 - 如果视图尚未加载,则无需配置或显示任何内容。

于 2013-09-10T16:46:30.137 回答