YOCView 0.1.7

YOCView 0.1.7

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Jan 2016

Maintained by Gabriel Handford.


Downloads

Total59
Week0
Month0

Installs

Apps4
powered by Segment

GitHub

Stars3
Watchers1
Forks0
Issues0
Contributors1
Pull Requests0

Code

Files6
LOCLines of Code 275


YOCView 0.1.7

  • By
  • Gabriel Handford

Simplifying UIView and UIViewController interactions.

Instead of making a UIViewController subclass and a UIView subclass, you create a YOCView subclass.

#import <YOCView/YOCView.h>

@interface MainView : YOCView
@end

To create a view controller use: [YOCViewController viewControllerForView:view];. For example in your AppDelegate you might do:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  MainView *mainView = [[MainView alloc] init]; // Subclasses YOCView
  UIViewController *viewController = [YOCView viewControllerForView:mainView];
  UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
  self.window.rootViewController = navigationController;
}

Then within your YOCView you can push, pop, present, dismiss by accessing self.navigation.

@implementation MyView

- (void)viewDidLoadWithLayout {
  [super viewDidLoadWithLayout];
  self.navigationTitle = @"Title";
}

- (void)pushAView {
  AnotherView *view = [[AnotherView alloc] init];
  [self.navigation pushView:view animated:YES];
}

- (void)presentAView {
  AnotherView *view = [[AnotherView alloc] init];
  [self.navigation presentView:view animated:YES];
}

- (void)popMyself {
  [self.navigation popViewAnimated:YES];
}

- (void)popToRoot {
  [self.navigation popToRootViewAnimated:YES];
}

- (void)dismissMyself {
  [self.navigation dismissAnimated:YES];
}

- (void)pushAViewHideNav {
  AnotherView *view = [[AnotherView alloc] init];
  view.viewOptions = YOCViewOptionsHideNavigation;
  [self.navigation pushView:view animated:YES];
}

@end

View Notifications

YOCView also gets the following notifications:

// Same as UIViewController notifications
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
- (void)viewDidLayoutSubviews;
- (void)viewDidLoad;

// When your app becomes active and this view is shown (after resigning the app)
- (void)viewDidBecomeActive;
- (void)viewWillResign;

// Same as viewDidLoad but after its been layout'ed.
- (void)viewDidLoadWithLayout;

// View will appear but only ever called once (after load)
- (void)viewWillAppearAfterLoad:(BOOL)animated;

// View did appear but only ever called once (after load)
- (void)viewDidAppearAfterLoad:(BOOL)animated;

Accessing your UIViewController

Calling self.navigation.viewController will give you access to your UIViewController. For example, to show an alert:

@implementation MyView

- (void)showAlert {
  UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Oops" message:@"An alert view" preferredStyle:UIAlertControllerStyleAlert];
  [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    [self.navigation.viewController dismissViewControllerAnimated:YES completion:nil];
  }]];
  [self.navigation.viewController presentViewController:alert animated:YES completion:nil];
}

@end

Podfile

pod "YOCView"

Example Project

The best way to follow and learn YOCView is by seeing it in action. Open the example project: Example.