diff --git a/SASlideMenu/ExampleDynamicMenuViewController.m b/SASlideMenu/ExampleDynamicMenuViewController.m
index 2c43cd9..8bd57fa 100644
--- a/SASlideMenu/ExampleDynamicMenuViewController.m
+++ b/SASlideMenu/ExampleDynamicMenuViewController.m
@@ -95,19 +95,15 @@ -(NSString*) segueIdForIndexPath:(NSIndexPath *)indexPath{
}
-(Boolean) slideOutThenIn{
- return NO;
+ return YES;
}
//Disable caching for the controller at the first row of each section
-(Boolean) disableContentViewControllerCachingForIndexPath:(NSIndexPath *)indexPath{
- if (indexPath.row ==0) {
- return YES;
- }
- return NO;
+ return YES;
}
//Enable the right menu for the the view controller in the first section
-(Boolean) hasRightMenuForIndexPath:(NSIndexPath *)indexPath{
-
return YES;
}
@@ -183,7 +179,7 @@ -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
}
#pragma mark -
#pragma mark SASlideMenuDelegate
-
+/*
-(void) slideMenuWillSlideIn:(UINavigationController *)selectedContent{
NSLog(@"slideMenuWillSlideIn");
}
@@ -208,4 +204,5 @@ -(void) slideMenuWillSlideToLeft:(UINavigationController *)selectedContent{
-(void) slideMenuDidSlideToLeft:(UINavigationController *)selectedContent{
NSLog(@"slideMenuDidSlideToLeft");
}
+ */
@end
diff --git a/SASlideMenu/SASlideMenu/SASlideMenuContentSegue.m b/SASlideMenu/SASlideMenu/SASlideMenuContentSegue.m
index 62fb642..669de54 100644
--- a/SASlideMenu/SASlideMenu/SASlideMenuContentSegue.m
+++ b/SASlideMenu/SASlideMenu/SASlideMenuContentSegue.m
@@ -58,28 +58,29 @@ -(void) perform{
layer.shadowPath =[UIBezierPath bezierPathWithRect:layer.bounds].CGPath;
}
- [rootController switchToContentViewController:destination];
-
- if ([rootController.leftMenu.slideMenuDataSource respondsToSelector:@selector(segueIdForIndexPath:)]) {
- [rootController addContentViewController:destination withIndexPath:selectedIndexPath];
- }
+ [rootController switchToContentViewController:destination completion:^{
+ if ([rootController.leftMenu.slideMenuDataSource respondsToSelector:@selector(segueIdForIndexPath:)]) {
+ [rootController addContentViewController:destination withIndexPath:selectedIndexPath];
+ }
+
+ //We do that after switchToContentViewController.
+ //because we need destination.parentViewController to be initialized.
+ if (hasRightMenu) {
+ [destination performSegueWithIdentifier:@"rightMenu" sender:rootController];
+ }
+
+ Boolean disablePanGesture= NO;
+ if ([rootController.leftMenu.slideMenuDataSource respondsToSelector:@selector(disablePanGestureForIndexPath:)]) {
+ disablePanGesture = [rootController.leftMenu.slideMenuDataSource disablePanGestureForIndexPath:selectedIndexPath];
+ }
+ if (!disablePanGesture) {
+ UIPanGestureRecognizer* panGesture= [[UIPanGestureRecognizer alloc] initWithTarget:rootController action:@selector(panItem:)];
+ [panGesture setMaximumNumberOfTouches:2];
+ [panGesture setDelegate:source];
+ [destination.view addGestureRecognizer:panGesture];
+ }
+ }];
- //We do that after switchToContentViewController.
- //because we need destination.parentViewController to be initialized.
- if (hasRightMenu) {
- [destination performSegueWithIdentifier:@"rightMenu" sender:rootController];
- }
-
- Boolean disablePanGesture= NO;
- if ([rootController.leftMenu.slideMenuDataSource respondsToSelector:@selector(disablePanGestureForIndexPath:)]) {
- disablePanGesture = [rootController.leftMenu.slideMenuDataSource disablePanGestureForIndexPath:selectedIndexPath];
- }
- if (!disablePanGesture) {
- UIPanGestureRecognizer* panGesture= [[UIPanGestureRecognizer alloc] initWithTarget:rootController action:@selector(panItem:)];
- [panGesture setMaximumNumberOfTouches:2];
- [panGesture setDelegate:source];
- [destination.view addGestureRecognizer:panGesture];
- }
}
@end
diff --git a/SASlideMenu/SASlideMenu/SASlideMenuRootViewController.h b/SASlideMenu/SASlideMenu/SASlideMenuRootViewController.h
index 39153cc..09482c3 100644
--- a/SASlideMenu/SASlideMenu/SASlideMenuRootViewController.h
+++ b/SASlideMenu/SASlideMenu/SASlideMenuRootViewController.h
@@ -19,7 +19,7 @@
@property (nonatomic,assign) Boolean isRightMenuEnabled;
@property (nonatomic,strong) SASlideMenuNavigationController* navigationController;
--(void) switchToContentViewController:(UINavigationController*) content;
+-(void) switchToContentViewController:(UINavigationController*) content completion:(void (^)(void))completion;
-(void) addContentViewController:(UIViewController*) content withIndexPath:(NSIndexPath*)indexPath;
-(void) popRightNavigationController;
diff --git a/SASlideMenu/SASlideMenu/SASlideMenuRootViewController.m b/SASlideMenu/SASlideMenu/SASlideMenuRootViewController.m
index fc90f47..8f38f28 100644
--- a/SASlideMenu/SASlideMenu/SASlideMenuRootViewController.m
+++ b/SASlideMenu/SASlideMenu/SASlideMenuRootViewController.m
@@ -250,7 +250,7 @@ -(void) tapShield:(UITapGestureRecognizer*)gesture{
[self doSlideIn:nil];
}
-(void) tapItem:(UITapGestureRecognizer*)gesture{
- [self switchToContentViewController:self.selectedContent];
+ [self switchToContentViewController:self.selectedContent completion:nil];
}
-(void) panItem:(UIPanGestureRecognizer*)gesture{
@@ -340,7 +340,7 @@ -(UINavigationController*) controllerForIndexPath:(NSIndexPath*) indexPath{
return [controllers objectForKey:indexPath];
}
--(void) switchToContentViewController:(UINavigationController*) content{
+-(void) switchToContentViewController:(UINavigationController*) content completion:(void (^)(void))completion{
CGRect bounds = self.view.bounds;
self.view.userInteractionEnabled = NO;
if ([self.leftMenu.slideMenuDataSource respondsToSelector:@selector(prepareForSwitchToContentViewController:)]) {
@@ -364,8 +364,12 @@ -(void) switchToContentViewController:(UINavigationController*) content{
[self addChildViewController:content];
[self.view addSubview:content.view];
self.selectedContent = content;
+ [NSThread sleepForTimeInterval:1.0];
[self doSlideIn:^(BOOL slideInCompleted) {
[content didMoveToParentViewController:self];
+ if(completion){
+ completion();
+ }
self.view.userInteractionEnabled = YES;
}];
}];
@@ -379,6 +383,9 @@ -(void) switchToContentViewController:(UINavigationController*) content{
self.selectedContent = content;
[self doSlideIn:^(BOOL completed) {
[content didMoveToParentViewController:self];
+ if(completion){
+ completion();
+ }
self.view.userInteractionEnabled = YES;
}];
}
@@ -405,8 +412,10 @@ -(void) switchToContentViewController:(UINavigationController*) content{
[self.leftMenu.slideMenuDelegate slideMenuDidSlideIn:self.selectedContent];
}
[content didMoveToParentViewController:self];
+ if(completion){
+ completion();
+ }
self.view.userInteractionEnabled = YES;
-
}
}
diff --git a/SASlideMenu/SASlideMenu/SASlideMenuViewController.m b/SASlideMenu/SASlideMenu/SASlideMenuViewController.m
index e81bc46..d09b114 100644
--- a/SASlideMenu/SASlideMenu/SASlideMenuViewController.m
+++ b/SASlideMenu/SASlideMenu/SASlideMenuViewController.m
@@ -43,7 +43,7 @@ - (void)loadContentAtIndexPath:(NSIndexPath*)indexPath {
if ([self.slideMenuDataSource respondsToSelector:@selector(segueIdForIndexPath:)]) {
UINavigationController* controller = [self.rootController controllerForIndexPath:indexPath];
if (controller) {
- [self.rootController switchToContentViewController:controller];
+ [self.rootController switchToContentViewController:controller completion:nil];
return;
}
NSString* segueId = [self.slideMenuDataSource segueIdForIndexPath:indexPath];
diff --git a/SASlideMenuDynamic/en.lproj/MainStoryboard.storyboard b/SASlideMenuDynamic/en.lproj/MainStoryboard.storyboard
index 0f6497e..9267ba9 100644
--- a/SASlideMenuDynamic/en.lproj/MainStoryboard.storyboard
+++ b/SASlideMenuDynamic/en.lproj/MainStoryboard.storyboard
@@ -562,54 +562,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-