所以当我有这个奇怪的错误(?)时,我在XCode上做了一些基本的事情。
这两种方法之间有一点延迟,我无法理解为什么
我认为它与之相关的一些代码。
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"viewDidLoad");
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"changing detail");
[foodNameText setText:[food objectForKey:kTNFoodName]];
[restaurantNameText setText: [food objectForKey:kTNRestaurantName]];
}
这不是一个大问题,但我认为这很奇怪,因为我的程序非常简单,所以iOS不应该超时计算任何东西。任何想法为什么会这样?
答案 0 :(得分:3)
ViewController事件按此顺序运行......
- (void)viewDidLoad
所有对象都是实例化的,但几何(框架等)尚未正确设置。
-(void)viewWillAppear:(BOOL)animated
现在几何图形正确,视图层次结构已准备好显示
此处转换动画将视情况运行
-(void)viewDidAppear:(BOOL)animated
动画完成。层次结构按几何图形显示。
因此,例如,如果您使用制作自定义过渡动画对象,则动画代码将在viewWillAppear
之后和viewDidAppear
之前运行。
我刚刚进行了一些简单的测试。
应用程序启动到VC1
2015-01-28 17:47:42.659 TestViews[14335:2062491] viewDidLoad
2015-01-28 17:47:42.660 TestViews[14335:2062491] viewWillAppear
2015-01-28 17:47:42.706 TestViews[14335:2062491] viewDidAppear
1ms didLoad -> willAppear
46ms willAppear -> didAppear
动画"显示"从VC1到VC2的segue。
2015-01-28 17:48:52.347 TestViews[14335:2062491] viewDidLoad
2015-01-28 17:48:52.347 TestViews[14335:2062491] viewWillAppear
2015-01-28 17:48:52.851 TestViews[14335:2062491] viewDidAppear
< 1ms didLoad -> willAppear
504ms willAppear -> didAppear
从VC1到VC2的PushViewController动画:否
2015-01-28 17:50:31.713 TestViews[14335:2062491] viewDidLoad
2015-01-28 17:50:31.713 TestViews[14335:2062491] viewWillAppear
2015-01-28 17:50:31.714 TestViews[14335:2062491] viewDidAppear
< 1ms didLoad -> willAppear
1ms willAppear -> didAppear
动画时机在动画师的控制之下。在&#39; Show&#39;的情况下segue我想这个设计为0.5s
答案 1 :(得分:2)
正在使用的时间是:
[super viewDidAppear:animated];
之前的日志...
关于这是做什么的,它可能是为视图或其他东西加载数据......你将不得不四处乱看,看看你是否可以了解它在做什么......设置一个断点并单步进入