mirror of
https://github.com/samsonjs/samhuri.net-ios.git
synced 2026-03-25 09:25:47 +00:00
factor some code into BlogSplitViewController
This commit is contained in:
parent
04df85f542
commit
8d70ddc8f4
6 changed files with 92 additions and 47 deletions
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
21
Blog/BlogSplitViewController.h
Normal file
21
Blog/BlogSplitViewController.h
Normal 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
|
||||
56
Blog/BlogSplitViewController.m
Normal file
56
Blog/BlogSplitViewController.m
Normal 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
|
||||
|
|
@ -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];
|
||||
|
|
|
|||
Loading…
Reference in a new issue