Skip to content

Commit

Permalink
Merge pull request ltransun-asterisk#5 from ltranframgia/main_app
Browse files Browse the repository at this point in the history
add location manager
  • Loading branch information
Tran Hai Linh authored Jun 22, 2017
2 parents 01b3070 + e12f88b commit 492bfa9
Show file tree
Hide file tree
Showing 16 changed files with 680 additions and 37 deletions.
50 changes: 45 additions & 5 deletions BaseMVC.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
8234BE781EF9887D009A5DE5 /* LocalizableString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8234BE391EF9887D009A5DE5 /* LocalizableString.swift */; };
8234BE791EF9887D009A5DE5 /* StructDefine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8234BE3A1EF9887D009A5DE5 /* StructDefine.swift */; };
8234BE7A1EF9887D009A5DE5 /* ViewDefine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8234BE3B1EF9887D009A5DE5 /* ViewDefine.swift */; };
8234BE7B1EF9887D009A5DE5 /* Animator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8234BE3E1EF9887D009A5DE5 /* Animator.swift */; };
8234BE7B1EF9887D009A5DE5 /* TransitionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8234BE3E1EF9887D009A5DE5 /* TransitionManager.swift */; };
8234BE7C1EF9887D009A5DE5 /* RealmManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8234BE3F1EF9887D009A5DE5 /* RealmManager.swift */; };
8234BE7E1EF9887D009A5DE5 /* RStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8234BE421EF9887D009A5DE5 /* RStore.swift */; };
8234BE7F1EF9887D009A5DE5 /* RUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8234BE431EF9887D009A5DE5 /* RUser.swift */; };
Expand All @@ -36,6 +36,12 @@
8234BE841EF9887D009A5DE5 /* OAuthHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8234BE4C1EF9887D009A5DE5 /* OAuthHandler.swift */; };
8234BE861EF9887D009A5DE5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8234BE501EF9887D009A5DE5 /* LaunchScreen.storyboard */; };
8234BE881EF9887D009A5DE5 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8234BE541EF9887D009A5DE5 /* Main.storyboard */; };
825778691EFAC78C0057DACB /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 825778681EFAC78C0057DACB /* MainTabBarController.swift */; };
8257786B1EFACA470057DACB /* User.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8257786A1EFACA470057DACB /* User.storyboard */; };
8257786D1EFACAA60057DACB /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8257786C1EFACAA60057DACB /* LoginViewController.swift */; };
825778701EFACC5C0057DACB /* Timeline.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8257786F1EFACC5C0057DACB /* Timeline.storyboard */; };
825778721EFACC760057DACB /* Message.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 825778711EFACC760057DACB /* Message.storyboard */; };
825778741EFACF670057DACB /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 825778731EFACF670057DACB /* LocationManager.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
Expand All @@ -61,7 +67,7 @@
8234BE391EF9887D009A5DE5 /* LocalizableString.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizableString.swift; sourceTree = "<group>"; };
8234BE3A1EF9887D009A5DE5 /* StructDefine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StructDefine.swift; sourceTree = "<group>"; };
8234BE3B1EF9887D009A5DE5 /* ViewDefine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewDefine.swift; sourceTree = "<group>"; };
8234BE3E1EF9887D009A5DE5 /* Animator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Animator.swift; sourceTree = "<group>"; };
8234BE3E1EF9887D009A5DE5 /* TransitionManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransitionManager.swift; sourceTree = "<group>"; };
8234BE3F1EF9887D009A5DE5 /* RealmManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RealmManager.swift; sourceTree = "<group>"; };
8234BE421EF9887D009A5DE5 /* RStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RStore.swift; sourceTree = "<group>"; };
8234BE431EF9887D009A5DE5 /* RUser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RUser.swift; sourceTree = "<group>"; };
Expand All @@ -73,6 +79,12 @@
8234BE4C1EF9887D009A5DE5 /* OAuthHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OAuthHandler.swift; sourceTree = "<group>"; };
8234BE511EF9887D009A5DE5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
8234BE551EF9887D009A5DE5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
825778681EFAC78C0057DACB /* MainTabBarController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = "<group>"; };
8257786A1EFACA470057DACB /* User.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = User.storyboard; sourceTree = "<group>"; };
8257786C1EFACAA60057DACB /* LoginViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = "<group>"; };
8257786F1EFACC5C0057DACB /* Timeline.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Timeline.storyboard; sourceTree = "<group>"; };
825778711EFACC760057DACB /* Message.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Message.storyboard; sourceTree = "<group>"; };
825778731EFACF670057DACB /* LocationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -144,6 +156,7 @@
isa = PBXGroup;
children = (
82F485B01EF98C81008D82A9 /* Main */,
8257786E1EFACAAC0057DACB /* User */,
);
path = Controllers;
sourceTree = "<group>";
Expand Down Expand Up @@ -186,8 +199,9 @@
8234BE3D1EF9887D009A5DE5 /* Manager */ = {
isa = PBXGroup;
children = (
8234BE3E1EF9887D009A5DE5 /* Animator.swift */,
8234BE3E1EF9887D009A5DE5 /* TransitionManager.swift */,
8234BE3F1EF9887D009A5DE5 /* RealmManager.swift */,
825778731EFACF670057DACB /* LocationManager.swift */,
);
path = Manager;
sourceTree = "<group>";
Expand Down Expand Up @@ -222,18 +236,38 @@
sourceTree = "<group>";
};
8234BE4D1EF9887D009A5DE5 /* Views */ = {
isa = PBXGroup;
children = (
825778671EFAC75D0057DACB /* Storyboards */,
);
path = Views;
sourceTree = "<group>";
};
825778671EFAC75D0057DACB /* Storyboards */ = {
isa = PBXGroup;
children = (
8234BE501EF9887D009A5DE5 /* LaunchScreen.storyboard */,
8234BE541EF9887D009A5DE5 /* Main.storyboard */,
8257786A1EFACA470057DACB /* User.storyboard */,
8257786F1EFACC5C0057DACB /* Timeline.storyboard */,
825778711EFACC760057DACB /* Message.storyboard */,
);
path = Views;
name = Storyboards;
sourceTree = "<group>";
};
8257786E1EFACAAC0057DACB /* User */ = {
isa = PBXGroup;
children = (
8257786C1EFACAA60057DACB /* LoginViewController.swift */,
);
name = User;
sourceTree = "<group>";
};
82F485B01EF98C81008D82A9 /* Main */ = {
isa = PBXGroup;
children = (
8234BE251EF9887D009A5DE5 /* BaseViewController.swift */,
825778681EFAC78C0057DACB /* MainTabBarController.swift */,
8234BE2A1EF9887D009A5DE5 /* StartViewController.swift */,
);
name = Main;
Expand Down Expand Up @@ -311,9 +345,12 @@
buildActionMask = 2147483647;
files = (
8234BE801EF9887D009A5DE5 /* Assets.xcassets in Resources */,
825778701EFACC5C0057DACB /* Timeline.storyboard in Resources */,
8257786B1EFACA470057DACB /* User.storyboard in Resources */,
8234BE861EF9887D009A5DE5 /* LaunchScreen.storyboard in Resources */,
8234BE881EF9887D009A5DE5 /* Main.storyboard in Resources */,
8234BE811EF9887D009A5DE5 /* Localizable.strings in Resources */,
825778721EFACC760057DACB /* Message.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -403,13 +440,16 @@
8234BE661EF9887D009A5DE5 /* BaseViewController.swift in Sources */,
8234BE7E1EF9887D009A5DE5 /* RStore.swift in Sources */,
8234BE7C1EF9887D009A5DE5 /* RealmManager.swift in Sources */,
825778691EFAC78C0057DACB /* MainTabBarController.swift in Sources */,
8234BE711EF9887D009A5DE5 /* UIView+Ext.swift in Sources */,
8234BE701EF9887D009A5DE5 /* UITableView+Ext.swift in Sources */,
8234BE6E1EF9887D009A5DE5 /* Date+Ext.swift in Sources */,
8234BE6F1EF9887D009A5DE5 /* String+Ext.swift in Sources */,
8234BE7B1EF9887D009A5DE5 /* Animator.swift in Sources */,
8234BE7B1EF9887D009A5DE5 /* TransitionManager.swift in Sources */,
8234BE831EF9887D009A5DE5 /* AppRouter.swift in Sources */,
8257786D1EFACAA60057DACB /* LoginViewController.swift in Sources */,
8234BE7A1EF9887D009A5DE5 /* ViewDefine.swift in Sources */,
825778741EFACF670057DACB /* LocationManager.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
7 changes: 7 additions & 0 deletions BaseMVC/Sources/Controllers/BaseViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ class BaseViewController: UIViewController, UIGestureRecognizerDelegate {
// MARK: - IBOutlet

// MARK: - Varialbes
lazy var mainTabBarViewController: MainTabBarController? = {
if let _tabBarController = self.tabBarController as? MainTabBarController {
return _tabBarController
}

return self.view.window?.rootViewController as? MainTabBarController
}()

// MARK: - View Lifecycle
override func viewDidLoad() {
Expand Down
57 changes: 57 additions & 0 deletions BaseMVC/Sources/Controllers/LoginViewController.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
//
// LoginViewController.swift
// BaseMVC
//
// Created by Henry Tran on 6/21/17.
// Copyright © 2017 THL. All rights reserved.
//

import UIKit

class LoginViewController: BaseViewController {

// MARK: - IBOutlet

// MARK: - Varialbes

// MARK: - View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
}

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

// MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}

// MARK: - Setup View

// MARK: - Call Api

// MARK: - Actions
@IBAction func actionTouchBtnLogin(_ sender: Any) {
self.mainTabBarViewController?.setupMainApp()
self.dismiss(animated: true, completion: nil)
}

// MARK: - Functions

}
95 changes: 95 additions & 0 deletions BaseMVC/Sources/Controllers/MainTabBarController.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
import UIKit

enum TabBarType: String {
case timeline
case message
case more
}

class MainTabBarController: UITabBarController {

// MARK: - Varialbes

// MARK: - View Lifecycle
override func awakeFromNib() {
super.awakeFromNib()

// setup
self.setupStartApp()
}

override func viewDidLoad() {
super.viewDidLoad()

// self.view.alpha = 0.0
// setup view
self.setupView()
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

// animate when appear
UIView.animate(withDuration: 0.5) {
self.view.alpha = 1.0
}
}

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

// MARK: - Setup View
private func setupView() {

}

func hideTabbar(hide: Bool?, animated: Bool = false) {
self.tabBar.isHidden = hide ?? false
}

// MARK: - Actions

// MARK: - Call Api

// MARK: - Functions
private func setupStartApp() {
let startViewController = StartViewController.getViewControllerFromStoryboard(Storyboard.Main.name)
// set list childs controller to tabbar
let controllers = [startViewController]
self.viewControllers = controllers
self.hideTabbar(hide: true)
}

func setupMainApp() {

// Timeline
let navigationTimeline = UIStoryboard(name: Storyboard.Timeline.name, bundle: nil).instantiateInitialViewController()!
let tabBarItemTimeline = UITabBarItem(tabBarSystemItem: .contacts, tag: 10)
navigationTimeline.tabBarItem = tabBarItemTimeline

// Message
let navigationMessage = UIStoryboard(name: Storyboard.Message.name, bundle: nil).instantiateInitialViewController()!
let tabBarItemMessage = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 20)
navigationMessage.tabBarItem = tabBarItemMessage

// User
let navigationUser = UIStoryboard(name: Storyboard.User.name, bundle: nil).instantiateInitialViewController()!
let tabBarItemUser = UITabBarItem(tabBarSystemItem: .more, tag: 30)
navigationUser.tabBarItem = tabBarItemUser

// set list childs controller to tabbar
let controllers = [navigationTimeline, navigationMessage, navigationUser]
self.viewControllers = controllers
self.hideTabbar(hide: false)
}
}
22 changes: 21 additions & 1 deletion BaseMVC/Sources/Controllers/StartViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,29 @@ class StartViewController: BaseViewController {

// MARK: - Functions
private func checkApp() {

// User module (login, register, ...)
self.perform(#selector(StartViewController.gotoUser), with: nil, afterDelay: 1)

// Main app
// self.perform(#selector(StartViewController.gotoMainApp), with: nil, afterDelay: 1)
}

func gotoMainApp() {
func gotoUser() {
let userSettingVC = LoginViewController.getViewControllerFromStoryboard(Storyboard.User.name)
let navigationVC = UINavigationController(rootViewController: userSettingVC)

// create animator for present
// let animator = Animator(presentedType: .push, dismissedType: .push)
// self.menuViewController?.animator = animator
//
// navigationVC.transitioningDelegate = self.menuViewController

// present
self.present(navigationVC, animated: true, completion: nil)
}

func gotoMainApp() {
self.mainTabBarViewController?.setupMainApp()
}
}
14 changes: 7 additions & 7 deletions BaseMVC/Sources/Extensions/Date+Ext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,40 +15,40 @@ import Foundation
extension Date {

// MARK: - Date
static func convertDateToString(fromDate: Date?, format: String) -> String? {
static func convertDateToString(fromDate: Date?, format: DateFormat) -> String? {
if let convertDate = fromDate {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = NSTimeZone.default
dateFormatter.locale = NSLocale(localeIdentifier: Constant.defaultDateLocale) as Locale!
dateFormatter.dateFormat = format
dateFormatter.dateFormat = format.rawValue
return dateFormatter.string(from: convertDate)
} else {
return nil
}
}

static func convertStringToDate(fromString: String?, format: String) -> Date? {
static func convertStringToDate(fromString: String?, format: DateFormat) -> Date? {
if let dateString = fromString {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = NSTimeZone.default
dateFormatter.locale = NSLocale(localeIdentifier: Constant.defaultDateLocale) as Locale!
dateFormatter.dateFormat = format
dateFormatter.dateFormat = format.rawValue
return dateFormatter.date(from: dateString)
} else {
return nil
}
}

static func convertStringDateToString(fromString: String?, fromFormat: String, toFormat: String) -> String? {
static func convertStringDateToString(fromString: String?, fromFormat: DateFormat, toFormat: DateFormat) -> String? {
if let dateString = fromString {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = NSTimeZone.default
dateFormatter.locale = NSLocale(localeIdentifier: Constant.defaultDateLocale) as Locale!
dateFormatter.dateFormat = fromFormat
dateFormatter.dateFormat = fromFormat.rawValue
guard let date = dateFormatter.date(from: dateString) else {
return nil
}
dateFormatter.dateFormat = toFormat
dateFormatter.dateFormat = toFormat.rawValue
return dateFormatter.string(from: date)
} else {
return nil
Expand Down
8 changes: 8 additions & 0 deletions BaseMVC/Sources/Helpers/EnumDefine.swift
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
//
enum DateFormat: String {
case yyyyssDash = "yyyy-MM-dd'T'HH:mm:ss"
case ddmmSlash = "dd/MM/yyyy HH:mm"
case ddMMyyyy = "dd/MM/yyyy"
case yyyyMMddDash = "yyyy-MM-dd"
case MMyyyy = "MM/yyyy"
case yyyyssSSSZZZZZ = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
}
Loading

0 comments on commit 492bfa9

Please sign in to comment.