Skip to content

Commit 7a6dcf2

Browse files
committed
Created a demo to demonstrate different features of SlideNavigationController
1 parent 136b1ae commit 7a6dcf2

19 files changed

+921
-396
lines changed

SlideMenu.xcodeproj/project.pbxproj

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,17 @@
3030
15C9AC1A1895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C9AC191895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m */; };
3131
15C9AC1D1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C9AC1C1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m */; };
3232
15CBD67C172A15F900F0C53E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD677172A15F900F0C53E /* HomeViewController.m */; };
33-
15CBD67D172A15F900F0C53E /* MenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD679172A15F900F0C53E /* MenuViewController.m */; };
33+
15CBD67D172A15F900F0C53E /* LeftMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD679172A15F900F0C53E /* LeftMenuViewController.m */; };
3434
15CBD67E172A15F900F0C53E /* ProfileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD67B172A15F900F0C53E /* ProfileViewController.m */; };
3535
15CBD689172A22B700F0C53E /* ProfileDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CBD688172A22B700F0C53E /* ProfileDetailViewController.m */; };
3636
15CBD699172A57F100F0C53E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15CBD698172A57F100F0C53E /* QuartzCore.framework */; };
3737
15CBD6BE172BBB3600F0C53E /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 15CBD6BD172BBB3600F0C53E /* [email protected] */; };
3838
15CBD6C0172BBB7100F0C53E /* menu-button.png in Resources */ = {isa = PBXBuildFile; fileRef = 15CBD6BF172BBB7100F0C53E /* menu-button.png */; };
39+
15E7D318190C24E3002EAE3F /* RightMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 15E7D317190C24E3002EAE3F /* RightMenuViewController.m */; };
40+
15E7D31B190C289E002EAE3F /* animation.png in Resources */ = {isa = PBXBuildFile; fileRef = 15E7D31A190C289E002EAE3F /* animation.png */; };
41+
15E7D31F190C33A5002EAE3F /* leftMenu.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 15E7D31D190C33A5002EAE3F /* leftMenu.jpg */; };
42+
15E7D321190C3B75002EAE3F /* rightMenu.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 15E7D320190C3B75002EAE3F /* rightMenu.jpg */; };
43+
15E7D327190C3DAE002EAE3F /* gear.png in Resources */ = {isa = PBXBuildFile; fileRef = 15E7D326190C3DAE002EAE3F /* gear.png */; };
3944
997929E2187336AA00716C77 /* FriendsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 997929E1187336AA00716C77 /* FriendsViewController.m */; };
4045
/* End PBXBuildFile section */
4146

@@ -86,15 +91,21 @@
8691
15C9AC1E1895A832006E6F27 /* SlideNavigationContorllerAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideNavigationContorllerAnimator.h; sourceTree = "<group>"; };
8792
15CBD676172A15F900F0C53E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
8893
15CBD677172A15F900F0C53E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
89-
15CBD678172A15F900F0C53E /* MenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuViewController.h; sourceTree = "<group>"; };
90-
15CBD679172A15F900F0C53E /* MenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuViewController.m; sourceTree = "<group>"; };
94+
15CBD678172A15F900F0C53E /* LeftMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LeftMenuViewController.h; sourceTree = "<group>"; };
95+
15CBD679172A15F900F0C53E /* LeftMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LeftMenuViewController.m; sourceTree = "<group>"; };
9196
15CBD67A172A15F900F0C53E /* ProfileViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProfileViewController.h; sourceTree = "<group>"; };
9297
15CBD67B172A15F900F0C53E /* ProfileViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProfileViewController.m; sourceTree = "<group>"; };
9398
15CBD687172A22B600F0C53E /* ProfileDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProfileDetailViewController.h; sourceTree = "<group>"; };
9499
15CBD688172A22B700F0C53E /* ProfileDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProfileDetailViewController.m; sourceTree = "<group>"; };
95100
15CBD698172A57F100F0C53E /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
96101
15CBD6BD172BBB3600F0C53E /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
97102
15CBD6BF172BBB7100F0C53E /* menu-button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu-button.png"; sourceTree = "<group>"; };
103+
15E7D316190C24E3002EAE3F /* RightMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RightMenuViewController.h; sourceTree = "<group>"; };
104+
15E7D317190C24E3002EAE3F /* RightMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RightMenuViewController.m; sourceTree = "<group>"; };
105+
15E7D31A190C289E002EAE3F /* animation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = animation.png; sourceTree = "<group>"; };
106+
15E7D31D190C33A5002EAE3F /* leftMenu.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = leftMenu.jpg; sourceTree = "<group>"; };
107+
15E7D320190C3B75002EAE3F /* rightMenu.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = rightMenu.jpg; sourceTree = "<group>"; };
108+
15E7D326190C3DAE002EAE3F /* gear.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = gear.png; sourceTree = "<group>"; };
98109
997929E0187336AA00716C77 /* FriendsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FriendsViewController.h; sourceTree = "<group>"; };
99110
997929E1187336AA00716C77 /* FriendsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FriendsViewController.m; sourceTree = "<group>"; };
100111
/* End PBXFileReference section */
@@ -158,6 +169,7 @@
158169
15371EE81728E3B400A508F4 /* SlideMenu */ = {
159170
isa = PBXGroup;
160171
children = (
172+
15E7D319190C2894002EAE3F /* Images */,
161173
15CBD675172A15F900F0C53E /* Helper Classes */,
162174
15371F241728E43600A508F4 /* Source */,
163175
15371EF11728E3B400A508F4 /* AppDelegate.h */,
@@ -234,8 +246,10 @@
234246
15CBD675172A15F900F0C53E /* Helper Classes */ = {
235247
isa = PBXGroup;
236248
children = (
237-
15CBD678172A15F900F0C53E /* MenuViewController.h */,
238-
15CBD679172A15F900F0C53E /* MenuViewController.m */,
249+
15CBD678172A15F900F0C53E /* LeftMenuViewController.h */,
250+
15CBD679172A15F900F0C53E /* LeftMenuViewController.m */,
251+
15E7D316190C24E3002EAE3F /* RightMenuViewController.h */,
252+
15E7D317190C24E3002EAE3F /* RightMenuViewController.m */,
239253
15CBD676172A15F900F0C53E /* HomeViewController.h */,
240254
15CBD677172A15F900F0C53E /* HomeViewController.m */,
241255
997929E0187336AA00716C77 /* FriendsViewController.h */,
@@ -257,6 +271,17 @@
257271
path = Assets;
258272
sourceTree = "<group>";
259273
};
274+
15E7D319190C2894002EAE3F /* Images */ = {
275+
isa = PBXGroup;
276+
children = (
277+
15E7D326190C3DAE002EAE3F /* gear.png */,
278+
15E7D320190C3B75002EAE3F /* rightMenu.jpg */,
279+
15E7D31D190C33A5002EAE3F /* leftMenu.jpg */,
280+
15E7D31A190C289E002EAE3F /* animation.png */,
281+
);
282+
path = Images;
283+
sourceTree = "<group>";
284+
};
260285
/* End PBXGroup section */
261286

262287
/* Begin PBXNativeTarget section */
@@ -329,9 +354,13 @@
329354
buildActionMask = 2147483647;
330355
files = (
331356
15371EED1728E3B400A508F4 /* InfoPlist.strings in Resources */,
357+
15E7D321190C3B75002EAE3F /* rightMenu.jpg in Resources */,
358+
15E7D327190C3DAE002EAE3F /* gear.png in Resources */,
332359
15371EF51728E3B400A508F4 /* Default.png in Resources */,
333360
15371EF71728E3B400A508F4 /* [email protected] in Resources */,
361+
15E7D31F190C33A5002EAE3F /* leftMenu.jpg in Resources */,
334362
15371EF91728E3B400A508F4 /* [email protected] in Resources */,
363+
15E7D31B190C289E002EAE3F /* animation.png in Resources */,
335364
15371EFC1728E3B400A508F4 /* MainStoryboard_iPhone.storyboard in Resources */,
336365
15371EFF1728E3B400A508F4 /* MainStoryboard_iPad.storyboard in Resources */,
337366
15CBD6BE172BBB3600F0C53E /* [email protected] in Resources */,
@@ -370,6 +399,7 @@
370399
isa = PBXSourcesBuildPhase;
371400
buildActionMask = 2147483647;
372401
files = (
402+
15E7D318190C24E3002EAE3F /* RightMenuViewController.m in Sources */,
373403
15C9AC1D1895A81D006E6F27 /* SlideNavigationContorllerAnimatorScaleAndFade.m in Sources */,
374404
15C9AC171895A7E7006E6F27 /* SlideNavigationContorllerAnimatorSlideAndFade.m in Sources */,
375405
15371EEF1728E3B400A508F4 /* main.m in Sources */,
@@ -379,7 +409,7 @@
379409
15C9AC111895A7BF006E6F27 /* SlideNavigationContorllerAnimatorSlide.m in Sources */,
380410
15CBD67C172A15F900F0C53E /* HomeViewController.m in Sources */,
381411
997929E2187336AA00716C77 /* FriendsViewController.m in Sources */,
382-
15CBD67D172A15F900F0C53E /* MenuViewController.m in Sources */,
412+
15CBD67D172A15F900F0C53E /* LeftMenuViewController.m in Sources */,
383413
15C9AC1A1895A80E006E6F27 /* SlideNavigationContorllerAnimatorScale.m in Sources */,
384414
15CBD67E172A15F900F0C53E /* ProfileViewController.m in Sources */,
385415
15CBD689172A22B700F0C53E /* ProfileDetailViewController.m in Sources */,

SlideMenu/AppDelegate.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
#import <UIKit/UIKit.h>
1010
#import "SlideNavigationController.h"
11-
#import "MenuViewController.h"
11+
#import "LeftMenuViewController.h"
12+
#import "RightMenuViewController.h"
1213

1314
@interface AppDelegate : UIResponder <UIApplicationDelegate>
1415

SlideMenu/AppDelegate.m

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,18 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
1515
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
1616
bundle: nil];
1717

18-
MenuViewController *rightMenu = (MenuViewController*)[mainStoryboard
19-
instantiateViewControllerWithIdentifier: @"MenuViewController"];
20-
rightMenu.cellIdentifier = @"rightMenuCell";
18+
LeftMenuViewController *leftMenu = (LeftMenuViewController*)[mainStoryboard
19+
instantiateViewControllerWithIdentifier: @"LeftMenuViewController"];
2120

22-
MenuViewController *leftMenu = (MenuViewController*)[mainStoryboard
23-
instantiateViewControllerWithIdentifier: @"MenuViewController"];
24-
leftMenu.cellIdentifier = @"leftMenuCell";
21+
RightMenuViewController *rightMenu = (RightMenuViewController*)[mainStoryboard
22+
instantiateViewControllerWithIdentifier: @"RightMenuViewController"];
2523

2624
[SlideNavigationController sharedInstance].rightMenu = rightMenu;
2725
[SlideNavigationController sharedInstance].leftMenu = leftMenu;
2826

2927
// Creating a custom bar button for right menu
3028
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
31-
[button setImage:[UIImage imageNamed:@"menu-button"] forState:UIControlStateNormal];
29+
[button setImage:[UIImage imageNamed:@"gear"] forState:UIControlStateNormal];
3230
[button addTarget:[SlideNavigationController sharedInstance] action:@selector(toggleRightMenu) forControlEvents:UIControlEventTouchUpInside];
3331
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
3432
[SlideNavigationController sharedInstance].rightBarButtonItem = rightBarButtonItem;

SlideMenu/Helper Classes/HomeViewController.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,21 @@
1111

1212
@interface HomeViewController : UIViewController <SlideNavigationControllerDelegate>
1313

14+
@property (nonatomic, strong) IBOutlet UISwitch *limitPanGestureSwitch;
15+
@property (nonatomic, strong) IBOutlet UISwitch *slideOutAnimationSwitch;
16+
@property (nonatomic, strong) IBOutlet UISwitch *shadowSwitch;
17+
@property (nonatomic, strong) IBOutlet UISwitch *panGestureSwitch;
18+
@property (nonatomic, strong) IBOutlet UISegmentedControl *portraitSlideOffsetSegment;
19+
@property (nonatomic, strong) IBOutlet UISegmentedControl *landscapeSlideOffsetSegment;
20+
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
21+
1422
- (IBAction)bounceMenu:(id)sender;
23+
- (IBAction)slideOutAnimationSwitchChanged:(id)sender;
24+
- (IBAction)limitPanGestureSwitchChanged:(id)sender;
25+
- (IBAction)changeAnimationSelected:(id)sender;
26+
- (IBAction)shadowSwitchSelected:(id)sender;
27+
- (IBAction)enablePanGestureSelected:(id)sender;
28+
- (IBAction)portraitSlideOffsetChanged:(id)sender;
29+
- (IBAction)landscapeSlideOffsetChanged:(id)sender;
1530

1631
@end

SlideMenu/Helper Classes/HomeViewController.m

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,21 @@
77
//
88

99
#import "HomeViewController.h"
10+
#import "LeftMenuViewController.h"
1011

1112
@implementation HomeViewController
1213

1314
- (void)viewDidLoad
1415
{
1516
[super viewDidLoad];
17+
18+
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 503);
19+
self.portraitSlideOffsetSegment.selectedSegmentIndex = [self indexFromPixels:[SlideNavigationController sharedInstance].portraitSlideOffset];
20+
self.landscapeSlideOffsetSegment.selectedSegmentIndex = [self indexFromPixels:[SlideNavigationController sharedInstance].landscapeSlideOffset];
21+
self.panGestureSwitch.on = [SlideNavigationController sharedInstance].enableSwipeGesture;
22+
self.shadowSwitch.on = [SlideNavigationController sharedInstance].enableShadow;
23+
self.limitPanGestureSwitch.on = ([SlideNavigationController sharedInstance].panGestureSideOffset == 0) ? NO : YES;
24+
self.slideOutAnimationSwitch.on = ((LeftMenuViewController *)[SlideNavigationController sharedInstance].leftMenu).slideOutAnimationEnabled;
1625
}
1726

1827
#pragma mark - SlideNavigationController Methods -
@@ -38,4 +47,69 @@ - (IBAction)bounceMenu:(id)sender
3847
menu = (menu == MenuLeft) ? MenuRight : MenuLeft;
3948
}
4049

50+
- (IBAction)slideOutAnimationSwitchChanged:(UISwitch *)sender
51+
{
52+
((LeftMenuViewController *)[SlideNavigationController sharedInstance].leftMenu).slideOutAnimationEnabled = sender.isOn;
53+
}
54+
55+
- (IBAction)limitPanGestureSwitchChanged:(UISwitch *)sender
56+
{
57+
[SlideNavigationController sharedInstance].panGestureSideOffset = (sender.isOn) ? 50 : 0;
58+
}
59+
60+
- (IBAction)changeAnimationSelected:(id)sender
61+
{
62+
[[SlideNavigationController sharedInstance] openMenu:MenuRight withCompletion:nil];
63+
}
64+
65+
- (IBAction)shadowSwitchSelected:(UISwitch *)sender
66+
{
67+
[SlideNavigationController sharedInstance].enableShadow = sender.isOn;
68+
}
69+
70+
- (IBAction)enablePanGestureSelected:(UISwitch *)sender
71+
{
72+
[SlideNavigationController sharedInstance].enableSwipeGesture = sender.isOn;
73+
}
74+
75+
- (IBAction)portraitSlideOffsetChanged:(UISegmentedControl *)sender
76+
{
77+
[SlideNavigationController sharedInstance].portraitSlideOffset = [self pixelsFromIndex:sender.selectedSegmentIndex];
78+
}
79+
80+
- (IBAction)landscapeSlideOffsetChanged:(UISegmentedControl *)sender
81+
{
82+
[SlideNavigationController sharedInstance].landscapeSlideOffset = [self pixelsFromIndex:sender.selectedSegmentIndex];
83+
}
84+
85+
#pragma mark - Helpers -
86+
87+
- (NSInteger)indexFromPixels:(NSInteger)pixels
88+
{
89+
if (pixels == 60)
90+
return 0;
91+
else if (pixels == 120)
92+
return 1;
93+
else
94+
return 2;
95+
}
96+
97+
- (NSInteger)pixelsFromIndex:(NSInteger)index
98+
{
99+
switch (index)
100+
{
101+
case 0:
102+
return 60;
103+
104+
case 1:
105+
return 120;
106+
107+
case 2:
108+
return 200;
109+
110+
default:
111+
return 0;
112+
}
113+
}
114+
41115
@end
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//
2+
// MenuViewController.h
3+
// SlideMenu
4+
//
5+
// Created by Aryan Gh on 4/24/13.
6+
// Copyright (c) 2013 Aryan Ghassemi. All rights reserved.
7+
//
8+
9+
#import <UIKit/UIKit.h>
10+
#import "SlideNavigationController.h"
11+
12+
@interface LeftMenuViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
13+
14+
@property (nonatomic, strong) IBOutlet UITableView *tableView;
15+
@property (nonatomic, assign) BOOL slideOutAnimationEnabled;
16+
17+
@end

0 commit comments

Comments
 (0)