Mik*_*ker 5 uisplitviewcontroller swift ios8
我有一个 UISplitViewController,我想在其中始终显示 iPad 的主视图控制器和详细视图控制器。这条线为我解决了这个问题:
// Always display master and detail in large screens
self.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
Run Code Online (Sandbox Code Playgroud)
在prepareForSegue中,当打开详细视图控制器时,我有以下后退按钮代码行
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = true
Run Code Online (Sandbox Code Playgroud)
现在,当用户按下后退按钮时,我想在隐藏主视图控制器后执行一个操作。我没有运气找到如何做到这一点。在 SplitViewControllerDelegate 中我尝试使用:
func splitViewController(svc: UISplitViewController, willChangeToDisplayMode displayMode: UISplitViewControllerDisplayMode)
Run Code Online (Sandbox Code Playgroud)
但该函数是在详细视图控制器变为全屏之前调用的。当 UISplitViewController 完成隐藏主视图时,是否有功能或其他功能可以帮助通知我?
您可以在 DetailViewController 中的视图上添加观察者,并在其触发时执行特定操作:
- (void)viewDidLoad {
[super viewDidLoad];
[self addObserver:self forKeyPath:@"view.frame" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionInitial context:nil];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if ([self observationInfo]) {
@try {
[self removeObserver:self forKeyPath:@"view.frame"];
}
@catch (NSException *exception) {}
}
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (object == self && [keyPath isEqualToString:@"view.frame"]) {
// do your action here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1155 次 |
| 最近记录: |