diff options
author | Grant Paul <chpwn@chpwn.com> | 2011-02-11 23:27:43 -0800 |
---|---|---|
committer | Grant Paul <chpwn@chpwn.com> | 2011-02-11 23:27:43 -0800 |
commit | 35f0a3b5de5a22872f7fbd96183f510a5ad80aa0 (patch) | |
tree | 0de40ea9ad9f05a88e29ae905856016dfb31786b /UICaboodle | |
parent | 32102f847292d56cf80f125eaea743f246c048a7 (diff) | |
parent | 36fa2ea5375250c9059b83ecd7bd05af56730fa9 (diff) |
Move -init into -loadView -viewDidLoad and friends, as Apple wants. Add -navigationURL and persistance (15 minute timeout) of Cydia sessions, with full lazy-loading of view controllers. Still failed to fix the URL->blackscreen bug, although now it just shows the wrong tab instaed of a black screen (really, WTF, UITabBarController?)
Diffstat (limited to 'UICaboodle')
-rw-r--r-- | UICaboodle/RVPage.h | 23 | ||||
-rw-r--r-- | UICaboodle/RVPage.mm | 43 |
2 files changed, 65 insertions, 1 deletions
diff --git a/UICaboodle/RVPage.h b/UICaboodle/RVPage.h index 1f39428..5d1346e 100644 --- a/UICaboodle/RVPage.h +++ b/UICaboodle/RVPage.h @@ -2,10 +2,31 @@ #import <UIKit/UIKit.h> +@interface UIViewController (Cydia) +- (BOOL) hasLoaded; +@end + @interface CYViewController : UIViewController { id delegate_; + BOOL loaded_; } -- (void)setDelegate:(id)delegate; + +// The default implementation of this method is essentially a no-op, +// but calling the superclass implementation is *required*. - (void) reloadData; +// This URL is used to save the state of the view controller. Return +// nil if you cannot or should not save the URL for this page. +- (NSURL *)navigationURL; +// By default, this delegate is unused. However, it's provided here in case +// you need some kind of delegate in a subclass. +- (void) setDelegate:(id)delegate; +- (id)delegate; +// Override this in subclasses if you manage the "has seen first load" state yourself. +- (BOOL) hasLoaded; +// This is called when the view managed by the view controller is released. +// That is not always when the controller itself is released: it also can +// happen when more memory is needed by the system or whenever the controller +// just happens not to be visible. +- (void) releaseSubviews; @end diff --git a/UICaboodle/RVPage.mm b/UICaboodle/RVPage.mm index 3e6e692..05a1e25 100644 --- a/UICaboodle/RVPage.mm +++ b/UICaboodle/RVPage.mm @@ -7,13 +7,56 @@ extern bool IsWildcat_; +@implementation UIViewController (Cydia) + +- (BOOL) hasLoaded { + return YES; +} + +@end + @implementation CYViewController + - (void) setDelegate:(id)delegate { delegate_ = delegate; } + +- (id) delegate { + return delegate_; +} + +- (void) viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + if (![self hasLoaded]) + [self reloadData]; +} + +- (BOOL) hasLoaded { + return loaded_; +} + +- (void) releaseSubviews { + // Do nothing. +} + +- (void) setView:(UIView *)view { + if (view == nil) + [self releaseSubviews]; + + [super setView:view]; +} + - (void) reloadData { + loaded_ = YES; +} + +- (NSURL *) navigationURL { + return nil; } + - (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation { return IsWildcat_ || orientation == UIInterfaceOrientationPortrait; } + @end |