Skip to content

Commit

Permalink
Merge pull request #20 from artemstepanenko/fix/issue-19
Browse files Browse the repository at this point in the history
Fix: issue-19
  • Loading branch information
Artem Stepanenko committed May 17, 2015
2 parents 39efe23 + cdbfc75 commit a9417fa
Show file tree
Hide file tree
Showing 9 changed files with 311 additions and 29 deletions.
63 changes: 38 additions & 25 deletions CrossNavigation/ViewController/CNViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,35 @@
#import "CNTimer.h"
#import <QuartzCore/QuartzCore.h>

@interface UIViewController (CrossNavigation_Private)

- (void)dismissWithParams:(NSDictionary *)params;
- (NSDictionary *)createParamsForDismissAnimated:(BOOL)animated completion:(void (^)(void))completion;

@end

@implementation UIViewController (CN_Private)

- (NSDictionary *)createParamsForDismissAnimated:(BOOL)animated completion:(void (^)(void))completion
{
// params
NSMutableDictionary *params = [NSMutableDictionary new];
params[@"animated"] = @(animated);

if (completion) {
params[@"completion"] = completion;
}

return params;
}

- (void)dismissWithParams:(NSDictionary *)params
{
[self dismissViewControllerAnimated:[params[@"animated"] boolValue] completion:params[@"completion"]];
}

@end

@interface CNViewController () <CNPanGestureHandlerDelegate>

@property (nonatomic, weak) CNViewController *nextViewController;
Expand Down Expand Up @@ -79,12 +108,14 @@ - (void)presentViewController:(CNViewController *)viewController
return;
}

[viewController prepareForTransitionToDirection:direction interactive:NO];

[viewController transitionWillFinishFromViewController:self
toViewController:viewController
recentPercentComplete:0.0f
animated:animated];
if ([viewController isKindOfClass:[CNViewController class]]) {
[viewController prepareForTransitionToDirection:direction interactive:NO];

[viewController transitionWillFinishFromViewController:self
toViewController:viewController
recentPercentComplete:0.0f
animated:animated];
}

[self presentViewController:viewController animated:animated completion:completion];
}
Expand All @@ -105,7 +136,7 @@ - (void)dismissViewControllerToDirection:(CNDirection)direction
return;
}

if (self.presentedViewController) {
if (self.presentedViewController.presentedViewController) {
// rather tricky case since default behaviour is buggy
[self dismissInvisibleViewControllerToDirection:direction animated:animated completion:completion];
} else {
Expand Down Expand Up @@ -378,24 +409,6 @@ - (UIView *)freezeUI
return imageView;
}

- (void)dismissWithParams:(NSDictionary *)params
{
[self dismissViewControllerAnimated:[params[@"animated"] boolValue] completion:params[@"completion"]];
}

- (NSDictionary *)createParamsForDismissAnimated:(BOOL)animated completion:(void (^)(void))completion
{
// params
NSMutableDictionary *params = [NSMutableDictionary new];
params[@"animated"] = @(animated);

if (completion) {
params[@"completion"] = completion;
}

return params;
}

- (UIViewController *)visibleViewController
{
UIViewController *viewController = self;
Expand Down
34 changes: 34 additions & 0 deletions Demo/CrossNavigationDemo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@
AC7EA55119D2D71A00D9A550 /* CNRightTransitioning.m in Sources */ = {isa = PBXBuildFile; fileRef = AC7EA54119D2D71A00D9A550 /* CNRightTransitioning.m */; };
AC7EA55219D2D71A00D9A550 /* CNTopTransitioning.m in Sources */ = {isa = PBXBuildFile; fileRef = AC7EA54419D2D71A00D9A550 /* CNTopTransitioning.m */; };
AC7EA55319D2D71A00D9A550 /* CNPanGestureHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = AC7EA54719D2D71A00D9A550 /* CNPanGestureHandler.m */; };
AC8D20BC1B08C65F0099FAC0 /* DefaultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AC8D20BB1B08C65F0099FAC0 /* DefaultViewController.m */; };
AC8D20C01B08C8880099FAC0 /* RegularViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AC8D20BF1B08C8880099FAC0 /* RegularViewController.m */; };
AC8D20C71B08DA0E0099FAC0 /* PrevDefaultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AC8D20C61B08DA0E0099FAC0 /* PrevDefaultViewController.m */; };
ACCDDE8C19F592B2005693F3 /* CNSeguePerformer.m in Sources */ = {isa = PBXBuildFile; fileRef = ACCDDE8B19F592B2005693F3 /* CNSeguePerformer.m */; };
ACECFDB51A09852A006B1246 /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ACECFDB41A09852A006B1246 /* TableViewController.m */; };
ACF62C711A5F19F700C61CD1 /* LastViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ACF62C701A5F19F700C61CD1 /* LastViewController.m */; };
Expand Down Expand Up @@ -93,6 +96,12 @@
AC7EA54919D2D71A00D9A550 /* cn_direction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cn_direction.h; sourceTree = "<group>"; };
AC7EA54A19D2D71A00D9A550 /* cn_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cn_utils.h; sourceTree = "<group>"; };
AC7EA55419D2D8C300D9A550 /* CrossNavigationDemo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CrossNavigationDemo-Prefix.pch"; sourceTree = "<group>"; };
AC8D20BA1B08C65F0099FAC0 /* DefaultViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DefaultViewController.h; sourceTree = "<group>"; };
AC8D20BB1B08C65F0099FAC0 /* DefaultViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DefaultViewController.m; sourceTree = "<group>"; };
AC8D20BE1B08C8880099FAC0 /* RegularViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegularViewController.h; sourceTree = "<group>"; };
AC8D20BF1B08C8880099FAC0 /* RegularViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegularViewController.m; sourceTree = "<group>"; };
AC8D20C51B08DA0E0099FAC0 /* PrevDefaultViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrevDefaultViewController.h; sourceTree = "<group>"; };
AC8D20C61B08DA0E0099FAC0 /* PrevDefaultViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PrevDefaultViewController.m; sourceTree = "<group>"; };
ACCDDE8A19F592B2005693F3 /* CNSeguePerformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNSeguePerformer.h; sourceTree = "<group>"; };
ACCDDE8B19F592B2005693F3 /* CNSeguePerformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNSeguePerformer.m; sourceTree = "<group>"; };
ACECFDB31A09852A006B1246 /* TableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewController.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -356,6 +365,26 @@
path = Utils;
sourceTree = "<group>";
};
AC8D20B91B08C6290099FAC0 /* Default */ = {
isa = PBXGroup;
children = (
AC8D20BA1B08C65F0099FAC0 /* DefaultViewController.h */,
AC8D20BB1B08C65F0099FAC0 /* DefaultViewController.m */,
AC8D20C51B08DA0E0099FAC0 /* PrevDefaultViewController.h */,
AC8D20C61B08DA0E0099FAC0 /* PrevDefaultViewController.m */,
);
name = Default;
sourceTree = "<group>";
};
AC8D20BD1B08C8620099FAC0 /* Regular */ = {
isa = PBXGroup;
children = (
AC8D20BE1B08C8880099FAC0 /* RegularViewController.h */,
AC8D20BF1B08C8880099FAC0 /* RegularViewController.m */,
);
name = Regular;
sourceTree = "<group>";
};
ACCDDE8919F5929B005693F3 /* Performer */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -404,6 +433,8 @@
ACF62C6D1A5F19A900C61CD1 /* ViewController */ = {
isa = PBXGroup;
children = (
AC8D20BD1B08C8620099FAC0 /* Regular */,
AC8D20B91B08C6290099FAC0 /* Default */,
ACF62C6E1A5F19C900C61CD1 /* Last */,
ACECFDB61A098532006B1246 /* Simple */,
ACECFDB71A09856D006B1246 /* Table */,
Expand Down Expand Up @@ -527,13 +558,16 @@
AC36786419D776CB00E7107A /* CNTimer.m in Sources */,
AC5551031AF8206100952AB7 /* CNViewController.m in Sources */,
AC7EA55219D2D71A00D9A550 /* CNTopTransitioning.m in Sources */,
AC8D20C71B08DA0E0099FAC0 /* PrevDefaultViewController.m in Sources */,
AC7EA50619D2D10600D9A550 /* AppDelegate.m in Sources */,
AC8D20C01B08C8880099FAC0 /* RegularViewController.m in Sources */,
AC5551071AF820BF00952AB7 /* UINavigationController+CrossNavigation.m in Sources */,
AC7EA55019D2D71A00D9A550 /* CNLeftTransitioning.m in Sources */,
AC52DBA519DBDC0100FB8293 /* ViewController.m in Sources */,
AC7EA55119D2D71A00D9A550 /* CNRightTransitioning.m in Sources */,
ACCDDE8C19F592B2005693F3 /* CNSeguePerformer.m in Sources */,
AC789FE119F57D6300D1DB29 /* CNBottomSegue.m in Sources */,
AC8D20BC1B08C65F0099FAC0 /* DefaultViewController.m in Sources */,
AC7EA54D19D2D71A00D9A550 /* CNTransitioningFactory.m in Sources */,
AC7EA50319D2D10600D9A550 /* main.m in Sources */,
AC789FE719F57D8F00D1DB29 /* CNRightSegue.m in Sources */,
Expand Down

0 comments on commit a9417fa

Please sign in to comment.