view will appear tab change
thread protection
This commit is contained in:
parent
40240f4501
commit
5227f53776
@ -76,14 +76,18 @@ import Foundation
|
|||||||
|
|
||||||
// MARK: - TabBarProtocol
|
// MARK: - TabBarProtocol
|
||||||
public func highlightTab(at index: Int) {
|
public func highlightTab(at index: Int) {
|
||||||
guard let newSelectedItem = items?[model.selectedTab] else { return }
|
MVMCoreDispatchUtility.performBlock(onMainThread: {
|
||||||
selectedItem = newSelectedItem
|
guard let newSelectedItem = self.items?[index] else { return }
|
||||||
|
self.selectedItem = newSelectedItem
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
public func selectTab(at index: Int) {
|
public func selectTab(at index: Int) {
|
||||||
guard let newSelectedItem = items?[model.selectedTab] else { return }
|
MVMCoreDispatchUtility.performBlock(onMainThread: {
|
||||||
selectedItem = newSelectedItem
|
guard let newSelectedItem = self.items?[index] else { return }
|
||||||
tabBar(self, didSelect: newSelectedItem)
|
self.selectedItem = newSelectedItem
|
||||||
|
self.tabBar(self, didSelect: newSelectedItem)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -314,6 +314,11 @@ import UIKit
|
|||||||
open override func viewWillAppear(_ animated: Bool) {
|
open override func viewWillAppear(_ animated: Bool) {
|
||||||
super.viewWillAppear(animated)
|
super.viewWillAppear(animated)
|
||||||
|
|
||||||
|
// Select tab if needed.
|
||||||
|
if let tab: Int = loadObject?.pageJSON?["tabBarIndex"] as? Int {
|
||||||
|
MVMCoreUISplitViewController.main()?.tabBar.highlightTab(at: tab)
|
||||||
|
}
|
||||||
|
|
||||||
// Update the navigation bar ui when view is appearing. Can remove check in the future, see viewControllerReady
|
// Update the navigation bar ui when view is appearing. Can remove check in the future, see viewControllerReady
|
||||||
if manager == nil {
|
if manager == nil {
|
||||||
setNavigationController()
|
setNavigationController()
|
||||||
@ -383,12 +388,13 @@ import UIKit
|
|||||||
MVMCoreUISession.sharedGlobal()?.splitViewController?.showRightPanel(animated: true)
|
MVMCoreUISession.sharedGlobal()?.splitViewController?.showRightPanel(animated: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Selects the tab if needed.
|
// Selects the tab if needed. Page driven takes priority over action driven (see viewWillAppear)
|
||||||
if let tab: Int = loadObject?.pageJSON?["tabBarIndex"] as? Int {
|
if let tab: Int = loadObject?.requestParameters?.actionMap?["tabBarIndex"] as? Int,
|
||||||
MVMCoreUISplitViewController.main()?.tabBar.highlightTab(at: tab)
|
error == nil,
|
||||||
} else if let tab: Int = loadObject?.requestParameters?.actionMap?["tabBarIndex"] as? Int,
|
loadObject?.pageJSON?["tabBarIndex"] == nil {
|
||||||
error == nil {
|
MVMCoreDispatchUtility.performBlock(onMainThread: {
|
||||||
MVMCoreUISplitViewController.main()?.tabBar.highlightTab(at: tab)
|
MVMCoreUISplitViewController.main()?.tabBar.highlightTab(at: tab)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -718,7 +718,7 @@ CGFloat const PanelAnimationDuration = 0.2;
|
|||||||
self.leftPanelWidth = leftPanelWidth;
|
self.leftPanelWidth = leftPanelWidth;
|
||||||
[NSLayoutConstraint constraintWithItem:self.mainView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.leftView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:self.mainView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.leftView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
|
||||||
[NSLayoutConstraint constraintWithItem:self.leftView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:self.leftView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0].active = YES;
|
||||||
[NSLayoutConstraint constraintWithItem:self.leftView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.leftView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0].active = YES;
|
||||||
|
|
||||||
if ([panel respondsToSelector:@selector(buttonForPanel)]) {
|
if ([panel respondsToSelector:@selector(buttonForPanel)]) {
|
||||||
self.leftPanelButton = [panel buttonForPanel];
|
self.leftPanelButton = [panel buttonForPanel];
|
||||||
@ -753,7 +753,7 @@ CGFloat const PanelAnimationDuration = 0.2;
|
|||||||
self.rightPanelWidth = rightPanelWidth;
|
self.rightPanelWidth = rightPanelWidth;
|
||||||
[NSLayoutConstraint constraintWithItem:self.rightView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:self.rightView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
|
||||||
[NSLayoutConstraint constraintWithItem:self.rightView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:self.rightView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0].active = YES;
|
||||||
[NSLayoutConstraint constraintWithItem:self.rightView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.rightView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0].active = YES;
|
||||||
|
|
||||||
if ([panel respondsToSelector:@selector(buttonForPanel)]) {
|
if ([panel respondsToSelector:@selector(buttonForPanel)]) {
|
||||||
self.rightPanelButton = [panel buttonForPanel];
|
self.rightPanelButton = [panel buttonForPanel];
|
||||||
@ -780,7 +780,7 @@ CGFloat const PanelAnimationDuration = 0.2;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)addTabBar:(nonnull UIView <TabBarProtocol>*)tabBar {
|
- (void)addTabBar:(nonnull UIView <TabBarProtocol>*)tabBar {
|
||||||
[self.view addSubview:tabBar];
|
[self.view insertSubview:tabBar atIndex:0];
|
||||||
[tabBar.topAnchor constraintEqualToAnchor:self.mainView.bottomAnchor].active = YES;
|
[tabBar.topAnchor constraintEqualToAnchor:self.mainView.bottomAnchor].active = YES;
|
||||||
[NSLayoutConstraint constraintWithItem:tabBar attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:tabBar attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0].active = YES;
|
||||||
[NSLayoutConstraint constraintWithItem:tabBar attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:tabBar attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.mainView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
|
||||||
@ -887,8 +887,8 @@ CGFloat const PanelAnimationDuration = 0.2;
|
|||||||
self.mainViewCoverView = coverView;
|
self.mainViewCoverView = coverView;
|
||||||
[NSLayoutConstraint constraintWithItem:coverView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:mainView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:coverView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:mainView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0].active = YES;
|
||||||
[NSLayoutConstraint constraintWithItem:coverView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:mainView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:coverView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:mainView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
|
||||||
[NSLayoutConstraint constraintWithItem:coverView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:mainView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:coverView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0].active = YES;
|
||||||
[NSLayoutConstraint constraintWithItem:coverView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:mainView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0].active = YES;
|
[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:coverView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0].active = YES;
|
||||||
|
|
||||||
[self setupPanels];
|
[self setupPanels];
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user