Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

RBLViewController #46

Merged
merged 12 commits into from

4 participants

Colin Wheeler Josh Abernathy Jonathan Willing Danny Greg
Colin Wheeler

This is a pull request for RBLViewController as discussed in Issue #33 to get feedback before merging in. I started here with simply getting much of what Josh did in JAViewController working on Rebel.

I should also note that I had to add a NSObject swizzling methods category that seems like it really belongs somewhere else in foundation level code.

I am open to any changes that should be made or feature additions. I am already starting to use this class in my new project I am working on so I should get more ideas of things to add as time progresses. Thanks

Josh Abernathy joshaber was assigned
Josh Abernathy
Admin

Hi Colin! Sorry it's taken so long on this—I hope to give it a good review in the next day or two. Because oldjoshcodelolz.

Josh Abernathy
Admin

Ah in the meantime, it looks like this doesn't merge cleanly as-is. Could you merge in upstream?

Colin Wheeler

Okay i'll merge in upstream as soon as I can. Im not on the best network for that at the moment, so I'll wait just a little bit till later this afternoon.

Josh Abernathy
Admin

Alright so a couple broad comments first.

  • I think the NSView -setNeedsLayout whatnot can go away since that's in AppKit as of 10.7.
  • All category methods/properties need to be prefixed with rbl_.

I'm inclined to think that the circumstances in which appearance methods should be called be left entirely to the user. In OS X land it seems waaaaaay too hard to know exactly what "appear" means universally.

Rebel/NSView+RBLViewControllerAdditions.m
((34 lines not shown))
+
+ if (newViewController) {
+ NSResponder *ownResponder = [self nextResponder];
+ [self setNextResponder:self.rbl_viewController];
+ [self.rbl_viewController setNextResponder:ownResponder];
+ }
+}
+
+#pragma mark - View Controller Methods
+
++(void)loadSupportForRBLViewControllers {
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ //swizzle swizzle...
+ [self rbl_swapMethod:@selector(viewWillMoveToSuperview:) with:@selector(custom_viewWillMoveToSuperview:)];
+ [self rbl_swapMethod:@selector(viewDidMoveToSuperview) with:@selector(custom_viewDidMoveToSuperview)];
Jonathan Willing
jwilling added a note

Sorry I don't mean to jump on @joshaber's territory here, but the indentation here looks like it's spaces and not tabs.

Colin Wheeler
Machx added a note

Yikes, there was a couple lines that had spaces instead of tabs. I don't know how I missed this. I'll fix it quickly. Looks like 4-6 lines that had spaces instead of tabs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Josh Abernathy
Admin

Oh man I'm really sorry Colin. This totally dropped off my radar. Next time give me a swift kick.

Could you merge master in so this merges cleanly? Then we should be :sparkles:

Jonathan Willing

:boom: @Machx Helping Josh out here a bit, looks like you need to update the submodules as well as they seem to be pointing toward old commits.

Colin Wheeler

there we go I think I got it all sorted out. let me know if there is anything else I need to do. Thanks!

Josh Abernathy
Admin

:boom: :baby:

Josh Abernathy joshaber merged commit ae14d73 into from
Danny Greg

One might say this pull is "sizzling" :trollface:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Oct 29, 2012
  1. Colin Wheeler
Commits on Oct 30, 2012
  1. Colin Wheeler

    initial support for swizzling the methods we'll need to use & impleme…

    Machx authored
    …nt custom_viewWillMoveToSuperView
Commits on Oct 31, 2012
  1. Colin Wheeler
  2. Colin Wheeler
  3. Colin Wheeler
  4. Colin Wheeler
  5. Colin Wheeler
Commits on Nov 5, 2012
  1. Colin Wheeler

    fixing upstream merge conflict

    Machx authored
Commits on Nov 19, 2012
  1. Colin Wheeler
Commits on Dec 4, 2012
  1. Colin Wheeler

    tabs not spaces

    Machx authored
Commits on Jan 15, 2013
  1. Colin Wheeler
Commits on Jan 16, 2013
  1. Colin Wheeler

    updating external projects

    Machx authored
This page is out of date. Refresh to see the latest.
24 Rebel.xcodeproj/project.pbxproj
View
@@ -21,6 +21,12 @@
AB61F63716373FE000DD5D2C /* RBLTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = AB61F63516373FE000DD5D2C /* RBLTableCellView.m */; };
AB61F6D41638370900DD5D2C /* NSApplication+RBLBlockAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AB61F6D21638370900DD5D2C /* NSApplication+RBLBlockAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
AB61F6D51638370900DD5D2C /* NSApplication+RBLBlockAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AB61F6D31638370900DD5D2C /* NSApplication+RBLBlockAdditions.m */; };
+ B85EE8DE163ECA8C00265870 /* RBLViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = B85EE8DC163ECA8C00265870 /* RBLViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ B85EE8DF163ECA8C00265870 /* RBLViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B85EE8DD163ECA8C00265870 /* RBLViewController.m */; };
+ B85EE8E9163ECF4C00265870 /* NSView+RBLViewControllerAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B85EE8E7163ECF4B00265870 /* NSView+RBLViewControllerAdditions.h */; };
+ B85EE8EA163ECF4C00265870 /* NSView+RBLViewControllerAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B85EE8E8163ECF4C00265870 /* NSView+RBLViewControllerAdditions.m */; };
+ B85EE8ED163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B85EE8EB163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.h */; };
+ B85EE8EE163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B85EE8EC163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.m */; };
D011FD5E16239A8600A27946 /* NSImage+RBLResizableImageAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D011FD5C16239A8600A27946 /* NSImage+RBLResizableImageAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
D011FD5F16239A8600A27946 /* NSImage+RBLResizableImageAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D011FD5D16239A8600A27946 /* NSImage+RBLResizableImageAdditions.m */; };
D01A4A28162C81EE0092D61F /* libExpecta.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01A4A0C162C81CC0092D61F /* libExpecta.a */; };
@@ -151,6 +157,12 @@
AB61F63516373FE000DD5D2C /* RBLTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RBLTableCellView.m; sourceTree = "<group>"; };
AB61F6D21638370900DD5D2C /* NSApplication+RBLBlockAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSApplication+RBLBlockAdditions.h"; sourceTree = "<group>"; };
AB61F6D31638370900DD5D2C /* NSApplication+RBLBlockAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSApplication+RBLBlockAdditions.m"; sourceTree = "<group>"; };
+ B85EE8DC163ECA8C00265870 /* RBLViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RBLViewController.h; sourceTree = "<group>"; };
+ B85EE8DD163ECA8C00265870 /* RBLViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RBLViewController.m; sourceTree = "<group>"; };
+ B85EE8E7163ECF4B00265870 /* NSView+RBLViewControllerAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSView+RBLViewControllerAdditions.h"; sourceTree = "<group>"; };
+ B85EE8E8163ECF4C00265870 /* NSView+RBLViewControllerAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSView+RBLViewControllerAdditions.m"; sourceTree = "<group>"; };
+ B85EE8EB163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+RBObjectSizzlingAdditions.h"; sourceTree = "<group>"; };
+ B85EE8EC163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+RBObjectSizzlingAdditions.m"; sourceTree = "<group>"; };
D011FD5C16239A8600A27946 /* NSImage+RBLResizableImageAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage+RBLResizableImageAdditions.h"; sourceTree = "<group>"; };
D011FD5D16239A8600A27946 /* NSImage+RBLResizableImageAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage+RBLResizableImageAdditions.m"; sourceTree = "<group>"; };
D03D67161677E13F0041DDF2 /* NSAttributedString+RBLHTMLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSAttributedString+RBLHTMLAdditions.h"; sourceTree = "<group>"; };
@@ -279,6 +291,8 @@
306A81DA1601C7A300BF45F3 /* RBLPopover.m */,
AB61F63416373FE000DD5D2C /* RBLTableCellView.h */,
AB61F63516373FE000DD5D2C /* RBLTableCellView.m */,
+ B85EE8DC163ECA8C00265870 /* RBLViewController.h */,
+ B85EE8DD163ECA8C00265870 /* RBLViewController.m */,
AB10DB4B166EA9CA00AB7AB1 /* RBLScrollView.h */,
AB10DB4C166EA9CA00AB7AB1 /* RBLScrollView.m */,
);
@@ -304,6 +318,10 @@
D0410EAA15C61895003A3203 /* NSTextView+RBLAntialiasingAdditions.m */,
D04CBFC615F6D87B004A5BCC /* NSView+RBLAnimationAdditions.h */,
D04CBFC715F6D87B004A5BCC /* NSView+RBLAnimationAdditions.m */,
+ B85EE8E7163ECF4B00265870 /* NSView+RBLViewControllerAdditions.h */,
+ B85EE8E8163ECF4C00265870 /* NSView+RBLViewControllerAdditions.m */,
+ B85EE8EB163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.h */,
+ B85EE8EC163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.m */,
);
name = Extensions;
sourceTree = "<group>";
@@ -489,6 +507,9 @@
D0E91C581603CC7600D23E93 /* RBLClipView.h in Headers */,
D011FD5E16239A8600A27946 /* NSImage+RBLResizableImageAdditions.h in Headers */,
AB61F63616373FE000DD5D2C /* RBLTableCellView.h in Headers */,
+ B85EE8DE163ECA8C00265870 /* RBLViewController.h in Headers */,
+ B85EE8E9163ECF4C00265870 /* NSView+RBLViewControllerAdditions.h in Headers */,
+ B85EE8ED163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.h in Headers */,
AB61F6D41638370900DD5D2C /* NSApplication+RBLBlockAdditions.h in Headers */,
AB10DB4D166EA9CA00AB7AB1 /* RBLScrollView.h in Headers */,
D088BEF916747D8F004B2665 /* NSFont+RBLFallbackAdditions.h in Headers */,
@@ -685,6 +706,9 @@
D0E91C591603CC7600D23E93 /* RBLClipView.m in Sources */,
D011FD5F16239A8600A27946 /* NSImage+RBLResizableImageAdditions.m in Sources */,
AB61F63716373FE000DD5D2C /* RBLTableCellView.m in Sources */,
+ B85EE8DF163ECA8C00265870 /* RBLViewController.m in Sources */,
+ B85EE8EA163ECF4C00265870 /* NSView+RBLViewControllerAdditions.m in Sources */,
+ B85EE8EE163EE15800265870 /* NSObject+RBObjectSizzlingAdditions.m in Sources */,
AB61F6D51638370900DD5D2C /* NSApplication+RBLBlockAdditions.m in Sources */,
AB10DB4E166EA9CA00AB7AB1 /* RBLScrollView.m in Sources */,
D088BEFA16747D8F004B2665 /* NSFont+RBLFallbackAdditions.m in Sources */,
15 Rebel/NSObject+RBObjectSizzlingAdditions.h
View
@@ -0,0 +1,15 @@
+//
+// NSObject+NSObjectSizzlingAdditions.h
+// Rebel
+//
+// Created by Colin Wheeler on 10/29/12.
+// Copyright (c) 2012 GitHub. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface NSObject (NSObjectSizzlingAdditions)
+
++ (void)rbl_swapMethod:(SEL)originalSelector with:(SEL)newSelector;
+
+@end
30 Rebel/NSObject+RBObjectSizzlingAdditions.m
View
@@ -0,0 +1,30 @@
+//
+// NSObject+NSObjectSizzlingAdditions.m
+// Rebel
+//
+// Created by Colin Wheeler on 10/29/12.
+// Copyright (c) 2012 GitHub. All rights reserved.
+//
+
+#import "NSObject+RBObjectSizzlingAdditions.h"
+#import <objc/runtime.h>
+
+@implementation NSObject (NSObjectSizzlingAdditions)
+
+// Shamelessly taken from JAViewController since mine is a bit longer & ties into my other framework methods
++ (void)rbl_swapMethod:(SEL)originalSelector with:(SEL)newSelector
+{
+ Method originalMethod = class_getInstanceMethod(self, originalSelector);
+ Method newMethod = class_getInstanceMethod(self, newSelector);
+ const char *originalTypeEncoding = method_getTypeEncoding(originalMethod);
+ const char *newTypeEncoding = method_getTypeEncoding(newMethod);
+ NSAssert2(!strcmp(originalTypeEncoding, newTypeEncoding), @"Method type encodings must be the same: %s vs. %s", originalTypeEncoding, newTypeEncoding);
+
+ if(class_addMethod(self, originalSelector, method_getImplementation(newMethod), newTypeEncoding)) {
+ class_replaceMethod(self, newSelector, method_getImplementation(originalMethod), originalTypeEncoding);
+ } else {
+ method_exchangeImplementations(originalMethod, newMethod);
+ }
+}
+
+@end
15 Rebel/NSView+RBLViewControllerAdditions.h
View
@@ -0,0 +1,15 @@
+//
+// NSView+NSView_RBLViewControllerAdditions.h
+// Rebel
+//
+// Created by Colin Wheeler on 10/29/12.
+// Copyright (c) 2012 GitHub. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@interface NSView (NSView_RBLViewControllerAdditions)
+
+@property (nonatomic, assign) IBOutlet NSViewController *rbl_viewController;
+
+@end
147 Rebel/NSView+RBLViewControllerAdditions.m
View
@@ -0,0 +1,147 @@
+//
+// NSView+NSView_RBLViewControllerAdditions.m
+// Rebel
+//
+// Created by Colin Wheeler on 10/29/12.
+// Copyright (c) 2012 GitHub. All rights reserved.
+//
+
+#import "NSView+RBLViewControllerAdditions.h"
+#import "RBLViewController.h"
+#import "NSObject+RBObjectSizzlingAdditions.h"
+#import <objc/runtime.h>
+
+void *kRBLViewControllerKey = &kRBLViewControllerKey;
+
+@implementation NSView (NSView_RBLViewControllerAdditions)
+
+#pragma mark - ViewController
+
+-(id)rbl_viewController {
+ return objc_getAssociatedObject(self, kRBLViewControllerKey);
+}
+
+-(void)setRbl_viewController:(id)newViewController {
+ [[self class] loadSupportForRBLViewControllers];
+
+ if (self.rbl_viewController) {
+ NSResponder *controllerNextResponder = [self.rbl_viewController nextResponder];
+ [self setNextResponder:controllerNextResponder];
+ [self.rbl_viewController setNextResponder:nil];
+ }
+
+ objc_setAssociatedObject(self, kRBLViewControllerKey, newViewController, OBJC_ASSOCIATION_ASSIGN);
+
+ if (newViewController) {
+ NSResponder *ownResponder = [self nextResponder];
+ [self setNextResponder:self.rbl_viewController];
+ [self.rbl_viewController setNextResponder:ownResponder];
+ }
+}
+
+#pragma mark - View Controller Methods
+
++(void)loadSupportForRBLViewControllers {
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ //swizzle swizzle...
+ [self rbl_swapMethod:@selector(viewWillMoveToSuperview:) with:@selector(custom_viewWillMoveToSuperview:)];
+ [self rbl_swapMethod:@selector(viewDidMoveToSuperview) with:@selector(custom_viewDidMoveToSuperview)];
+
+ [self rbl_swapMethod:@selector(viewWillMoveToWindow:) with:@selector(custom_viewWillMoveToWindow:)];
+ [self rbl_swapMethod:@selector(viewDidMoveToWindow) with:@selector(custom_viewDidMoveToWindow)];
+
+ [self rbl_swapMethod:@selector(setNextResponder:) with:@selector(custom_setNextResponder:)];
+ });
+}
+
+- (void)custom_viewWillMoveToSuperview:(NSView *)newSuperview {
+ [self custom_viewWillMoveToSuperview:newSuperview];
+
+ if ([self.rbl_viewController isKindOfClass:[RBLViewController class]]) {
+ if (newSuperview == nil) {
+ [(RBLViewController *)self.rbl_viewController viewWillBeRemovedFromSuperview];
+
+ if ((self.superview != nil) && (self.window != nil)) {
+ [(RBLViewController *)self.rbl_viewController viewWillDisappear];
+ }
+ } else {
+ [(RBLViewController *)self.rbl_viewController viewWillMoveToSuperview:newSuperview];
+
+ if (self.window != nil) {
+ [(RBLViewController *)self.rbl_viewController viewWillAppear];
+ }
+ }
+ }
+}
+
+- (void)custom_viewDidMoveToSuperview {
+ [self custom_viewDidMoveToSuperview];
+
+ if ([self.rbl_viewController isKindOfClass:[RBLViewController class]]) {
+ if (self.superview == nil) {
+ [(RBLViewController *)self.rbl_viewController viewWasRemovedFromSuperview];
+
+ if (self.window == nil) {
+ [(RBLViewController *)self.rbl_viewController viewDidDisappear];
+ }
+ } else {
+ [(RBLViewController *)self.rbl_viewController viewDidMoveToSuperview];
+
+ if (self.window != nil) {
+ [(RBLViewController *)self.rbl_viewController viewDidAppear];
+ }
+ }
+ }
+}
+
+- (void)custom_viewWillMoveToWindow:(NSWindow *)newWindow {
+ [self custom_viewWillMoveToWindow:newWindow];
+
+ if ([self.rbl_viewController isKindOfClass:[RBLViewController class]]) {
+ if (newWindow == nil) {
+ [(RBLViewController *)self.rbl_viewController viewWillBeRemovedFromWindow];
+
+ if ((self.superview != nil) && (self.window != nil)) {
+ [(RBLViewController *)self.rbl_viewController viewWillDisappear];
+ }
+ } else {
+ [(RBLViewController *)self.rbl_viewController viewWillMoveToWindow:newWindow];
+
+ if (self.superview != nil) {
+ [(RBLViewController *)self.rbl_viewController viewWillAppear];
+ }
+ }
+ }
+}
+
+- (void)custom_viewDidMoveToWindow {
+ [self custom_viewDidMoveToWindow];
+
+ if ([self.rbl_viewController isKindOfClass:[RBLViewController class]]) {
+ if (self.window == nil) {
+ [(RBLViewController *)self.rbl_viewController viewWasRemovedFromWindow];
+
+ if (self.superview == nil) {
+ [(RBLViewController *)self.rbl_viewController viewDidDisappear];
+ }
+ } else {
+ [(RBLViewController *)self.rbl_viewController viewDidMoveToWindow];
+
+ if (self.superview != nil) {
+ [(RBLViewController *)self.rbl_viewController viewDidAppear];
+ }
+ }
+ }
+}
+
+- (void)custom_setNextResponder:(NSResponder *)newNextResponder {
+ if (self.rbl_viewController != nil) {
+ [self.rbl_viewController setNextResponder:newNextResponder];
+ return;
+ }
+
+ [self custom_setNextResponder:newNextResponder];
+}
+
+@end
35 Rebel/RBLViewController.h
View
@@ -0,0 +1,35 @@
+//
+// RBLViewController.h
+// Rebel
+//
+// Created by Colin Wheeler on 10/29/12.
+// Copyright (c) 2012 GitHub. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@interface RBLViewController : NSViewController
+
++ (id)viewController;
+
+- (void)viewDidLoad;
+
+// Called when the view has a superview and window. This does not necessarily mean the view is visible.
+- (void)viewWillAppear;
+- (void)viewDidAppear;
+
+// Called when the view no longer has a superview or no longer has a window.
+- (void)viewWillDisappear;
+- (void)viewDidDisappear;
+
+- (void)viewWillMoveToSuperview:(NSView *)newSuperview;
+- (void)viewDidMoveToSuperview;
+- (void)viewWillBeRemovedFromSuperview;
+- (void)viewWasRemovedFromSuperview;
+
+- (void)viewWillMoveToWindow:(NSWindow *)newWindow;
+- (void)viewDidMoveToWindow;
+- (void)viewWillBeRemovedFromWindow;
+- (void)viewWasRemovedFromWindow;
+
+@end
100 Rebel/RBLViewController.m
View
@@ -0,0 +1,100 @@
+//
+// RBLViewController.m
+// Rebel
+//
+// Created by Colin Wheeler on 10/29/12.
+// Copyright (c) 2012 GitHub. All rights reserved.
+//
+
+#import "RBLViewController.h"
+#import "NSView+RBLViewControllerAdditions.h"
+
+@interface RBLViewController ()
+
+@end
+
+@implementation RBLViewController
+
++(id)viewController
+{
+ return [[self alloc] initWithNibName:NSStringFromClass([self class]) bundle:nil];
+}
+
+-(void)loadView
+{
+ [super loadView];
+ [self viewDidLoad];
+}
+
+-(void)setView:(NSView *)view
+{
+ super.view = view;
+ self.view.rbl_viewController = self;
+}
+
+- (void)viewDidLoad
+{
+
+}
+
+- (void)viewWillAppear
+{
+
+}
+
+- (void)viewDidAppear
+{
+
+}
+
+- (void)viewWillDisappear
+{
+
+}
+
+- (void)viewDidDisappear
+{
+
+}
+
+- (void)viewWillMoveToSuperview:(NSView *)newSuperview
+{
+
+}
+
+- (void)viewDidMoveToSuperview
+{
+
+}
+
+- (void)viewWillBeRemovedFromSuperview
+{
+
+}
+
+- (void)viewWasRemovedFromSuperview
+{
+
+}
+
+- (void)viewWillMoveToWindow:(NSWindow *)newWindow
+{
+
+}
+
+- (void)viewDidMoveToWindow
+{
+
+}
+
+- (void)viewWillBeRemovedFromWindow
+{
+
+}
+
+- (void)viewWasRemovedFromWindow
+{
+
+}
+
+@end
1  Rebel/Rebel.h
View
@@ -17,5 +17,6 @@
#import <Rebel/RBLView.h>
#import <Rebel/CAAnimation+RBLBlockAdditions.h>
#import <Rebel/RBLPopover.h>
+#import <Rebel/RBLViewController.h>
#import <Rebel/RBLTableCellView.h>
#import <Rebel/RBLScrollView.h>
Something went wrong with that request. Please try again.