我有一个UITableViewController
在我的应用程序中,它直接添加到视图层次结构中。视图出现后,我想滚动到特定的单元格。我的解决方案是调用滚动代码-[viewDidAppear]
.
根据苹果的文档,我必须手动调用该方法:
如果属于视图控制器的视图直接添加到视图层次结构中,则视图控制器将不会收到此消息。如果您向视图层次结构中插入或添加视图,并且它具有视图控制器,则应直接向关联的视图控制器发送此消息。
问题是:什么时候才是手动调用的合适时机?
从父视图控制器调用它-[viewDidAppear]
当我尝试滚动时会导致崩溃,因为显然,表视图实际上didn't但出现,因此认为它没有可滚动到的部分。
如果您使用视图控制器包含,请不要调用viewWillAppear:
直接地。而是使用– beginAppearanceTransition:animated: https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/beginAppearanceTransition:animated: and – endAppearanceTransition https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/endAppearanceTransition.
如果您正在实现自定义容器控制器,请使用此方法告诉子级其视图即将出现或消失。不要直接调用 viewWillAppear:、viewWillDisappear:、viewDidAppear: 或 viewDidDisappear:。
调用addSubView会自动触发viewWillAppear:
and viewDidAppear:
如果视图的 viewController 是子视图控制器,则调用viewWillAppear:
直接会触发视图外观方法两次。使用 beginAppearanceTransition:animated:and
– endAppearanceTransition` 将抑制自动行为,因此您只能调用它一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)