factor some code into BlogSplitViewController

This commit is contained in:
Sami Samhuri 2015-06-28 13:17:30 -07:00
parent 04df85f542
commit 8d70ddc8f4
6 changed files with 92 additions and 47 deletions

View file

@ -17,6 +17,7 @@
1BCFCB7B50DAE4885AE55B80 /* MuseoSans-100.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1BCFCC3154DB1D3B3C025211 /* MuseoSans-100.otf */; };
1BCFCC3709A3C3783E180815 /* ChangeTitleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCFCE26B630D546311BB715 /* ChangeTitleViewController.m */; };
1BCFCC637C63C780248D685E /* PostCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCFCB5C36F301B2B93F8069 /* PostCell.m */; };
1BCFCD56F7850C9BDF8261AC /* BlogSplitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCFC1C7E02F4D1867A5D711 /* BlogSplitViewController.m */; };
1BCFCD747F327FC361469D49 /* MuseoSans-100-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1BCFCB67571197A762B88624 /* MuseoSans-100-Italic.otf */; };
1BCFCD7E8EEBFAA97226B0BF /* UIColor+Hex.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BCFC23988387A5CAE551C90 /* UIColor+Hex.m */; };
1BCFCE976D6638781FBA9942 /* MuseoSans-700.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1BCFC462F5540C67B9D97299 /* MuseoSans-700.otf */; };
@ -98,6 +99,7 @@
/* Begin PBXFileReference section */
1613DC56A86AFA7E50460A37 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; };
1BCFC0549FB7723D8893A91C /* ExtensionItemProcessor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExtensionItemProcessor.m; sourceTree = "<group>"; };
1BCFC1C7E02F4D1867A5D711 /* BlogSplitViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BlogSplitViewController.m; sourceTree = "<group>"; };
1BCFC23988387A5CAE551C90 /* UIColor+Hex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+Hex.m"; sourceTree = "<group>"; };
1BCFC27DA8A32D0484C273A0 /* ExtensionItemProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtensionItemProcessor.h; sourceTree = "<group>"; };
1BCFC32EC1E5AE196D194D21 /* CommonUI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CommonUI.m; sourceTree = "<group>"; };
@ -105,6 +107,7 @@
1BCFC3B62AA92DB07923F7C1 /* PostCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PostCollection.m; sourceTree = "<group>"; };
1BCFC40D1BFCFBF04BC79A35 /* MuseoSans-900.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; path = "MuseoSans-900.otf"; sourceTree = "<group>"; };
1BCFC462F5540C67B9D97299 /* MuseoSans-700.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; path = "MuseoSans-700.otf"; sourceTree = "<group>"; };
1BCFC63F2FE2EFBC1C513859 /* BlogSplitViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlogSplitViewController.h; sourceTree = "<group>"; };
1BCFC7FD826AC4789F946BC9 /* MuseoSans-900-Italic.otf */ = {isa = PBXFileReference; lastKnownFileType = file.otf; path = "MuseoSans-900-Italic.otf"; sourceTree = "<group>"; };
1BCFCA73B716677EFBCEC417 /* CommonUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommonUI.h; sourceTree = "<group>"; };
1BCFCB18C8C8304D67E6462E /* PostCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PostCollection.h; sourceTree = "<group>"; };
@ -316,6 +319,8 @@
7B2B43501AED5BA500BAC4E2 /* Functions.m */,
1BCFC32EC1E5AE196D194D21 /* CommonUI.m */,
1BCFCA73B716677EFBCEC417 /* CommonUI.h */,
1BCFC1C7E02F4D1867A5D711 /* BlogSplitViewController.m */,
1BCFC63F2FE2EFBC1C513859 /* BlogSplitViewController.h */,
);
path = Blog;
sourceTree = "<group>";
@ -685,6 +690,7 @@
1BCFCF6DB93786CC2EDB8F69 /* PostCollection.m in Sources */,
1BCFCC3709A3C3783E180815 /* ChangeTitleViewController.m in Sources */,
1BCFC7C3FCBF364F3239C3D4 /* CommonUI.m in Sources */,
1BCFCD56F7850C9BDF8261AC /* BlogSplitViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View file

@ -12,6 +12,7 @@
#import "EditorViewController.h"
#import "SamhuriNet.h"
#import "Functions.h"
#import "BlogSplitViewController.h"
@interface AppDelegate () <UISplitViewControllerDelegate>
@ -28,13 +29,11 @@
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self setupCodeInjection];
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = splitViewController.viewControllers.lastObject;
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
BlogSplitViewController *splitViewController = (BlogSplitViewController *)self.window.rootViewController;
splitViewController.delegate = self;
self.postsViewController.blogController = self.site.blogController;
self.editorViewControllerForPhone.blogController = self.site.blogController;
self.editorViewControllerForPad.blogController = self.site.blogController;
splitViewController.site = [SamhuriNet new];
UINavigationController *navigationController = splitViewController.detailNavigationController;
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
return YES;
}
@ -50,37 +49,6 @@
}
}
- (PostsViewController *)postsViewController {
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = splitViewController.viewControllers.firstObject;
PostsViewController *postsViewController = (PostsViewController *)navigationController.viewControllers.firstObject;
return postsViewController;
}
- (EditorViewController *)editorViewControllerForPhone {
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = splitViewController.viewControllers.firstObject;
if (navigationController.viewControllers.count > 1) {
navigationController = navigationController.viewControllers.lastObject;
}
EditorViewController *editorViewController = (EditorViewController *)navigationController.viewControllers.firstObject;
return editorViewController;
}
- (EditorViewController *)editorViewControllerForPad {
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = splitViewController.viewControllers.lastObject;
EditorViewController *editorViewController = (EditorViewController *)navigationController.viewControllers.firstObject;
return editorViewController;
}
- (SamhuriNet *)site {
if (!_site) {
_site = [SamhuriNet new];
}
return _site;
}
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
@ -123,10 +91,9 @@
NSLog(@"did decode restorable state with coder %@", coder);
}
#pragma mark - UISplitViewDelegate methods
- (BOOL) splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController {
- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController {
UINavigationController *navigationController = [secondaryViewController isKindOfClass:[UINavigationController class]]
? (UINavigationController *)secondaryViewController
: nil;

View file

@ -353,10 +353,10 @@ wanted with as little input and thought as possible.</string>
</objects>
<point key="canvasLocation" x="1478" y="129"/>
</scene>
<!--Split View Controller-->
<!--Blog Split View Controller-->
<scene sceneID="Nki-YV-4Qg">
<objects>
<splitViewController storyboardIdentifier="Split View Controller" useStoryboardIdentifierAsRestorationIdentifier="YES" id="H1p-Uh-vWS" sceneMemberID="viewController">
<splitViewController storyboardIdentifier="Split View Controller" useStoryboardIdentifierAsRestorationIdentifier="YES" id="H1p-Uh-vWS" customClass="BlogSplitViewController" sceneMemberID="viewController">
<toolbarItems/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
<connections>
@ -510,6 +510,6 @@ wanted with as little input and thought as possible.</string>
</scene>
</scenes>
<inferredMetricsTieBreakers>
<segue reference="6S0-TO-JiA"/>
<segue reference="Tll-UG-LXB"/>
</inferredMetricsTieBreakers>
</document>

View file

@ -0,0 +1,21 @@
//
// Created by Sami Samhuri on 2015-06-27.
// Copyright (c) 2015 Guru Logic Inc. All rights reserved.
//
@import UIKit;
@class PostsViewController;
@class EditorViewController;
@class SamhuriNet;
@interface BlogSplitViewController : UISplitViewController
@property (nonatomic, strong) SamhuriNet *site;
- (UINavigationController *)masterNavigationController;
- (UINavigationController *)detailNavigationController;
- (PostsViewController *)postsViewController;
- (EditorViewController *)editorViewControllerForPhone;
- (EditorViewController *)editorViewControllerForPad;
@end

View file

@ -0,0 +1,56 @@
//
// Created by Sami Samhuri on 2015-06-27.
// Copyright (c) 2015 Guru Logic Inc. All rights reserved.
//
#import <ObjectiveSugar/NSArray+ObjectiveSugar.h>
#import "BlogSplitViewController.h"
#import "PostsViewController.h"
#import "EditorViewController.h"
#import "SamhuriNet.h"
@implementation BlogSplitViewController
- (void)setSite:(SamhuriNet *)site {
_site = site;
self.postsViewController.blogController = self.site.blogController;
self.editorViewControllerForPhone.blogController = self.site.blogController;
self.editorViewControllerForPad.blogController = self.site.blogController;
}
- (void)awakeFromNib {
[super awakeFromNib];
self.postsViewController.preferredContentSize = CGSizeMake(320, 600);
}
- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator {
[super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
BOOL isCompact = newCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact;
self.postsViewController.clearsSelectionOnViewWillAppear = isCompact;
}
- (UINavigationController *)masterNavigationController {
return self.viewControllers.firstObject;
}
- (UINavigationController *)detailNavigationController {
return self.viewControllers.lastObject;
}
- (PostsViewController *)postsViewController {
return (PostsViewController *)self.masterNavigationController.viewControllers.firstObject;
}
- (EditorViewController *)editorViewControllerForPhone {
UINavigationController *navigationController = self.masterNavigationController;
if (navigationController.viewControllers.count > 1) {
navigationController = navigationController.viewControllers.lastObject;
}
EditorViewController *editorViewController = (EditorViewController *)navigationController.viewControllers.firstObject;
return editorViewController;
}
- (EditorViewController *)editorViewControllerForPad {
return (EditorViewController *)self.detailNavigationController.viewControllers.firstObject;
}
@end

View file

@ -63,11 +63,6 @@ static const NSUInteger SectionPublished = 1;
- (void)awakeFromNib {
[super awakeFromNib];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
self.clearsSelectionOnViewWillAppear = NO;
self.preferredContentSize = CGSizeMake(320.0, 600.0);
}
[self setupTitleView];
[self setupFontAwesomeIcons];
self.refreshControl.tintColor = [UIColor whiteColor];