Merge branch 'feature/tap_tab_logic' into develop

This commit is contained in:
nixzhu
2015-11-02 11:19:43 +08:00
5 changed files with 139 additions and 11 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ DEPENDENCIES:
EXTERNAL SOURCES:
MZFayeClient:
:path: "../CatchLib-iOS/MZFayeClient/"
:path: ../CatchLib-iOS/MZFayeClient/
SPEC CHECKSUMS:
1PasswordExtension: 676a216461ffa9189db66541b5a2465e10ae4743
+8
View File
@@ -246,6 +246,8 @@
50DEE0321BE339B000015741 /* LoadMoreTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 50DEE0301BE339B000015741 /* LoadMoreTableViewCell.xib */; };
50DEE0361BE3720F00015741 /* LoadMoreCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50DEE0341BE3720F00015741 /* LoadMoreCollectionViewCell.swift */; };
50DEE0371BE3720F00015741 /* LoadMoreCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 50DEE0351BE3720F00015741 /* LoadMoreCollectionViewCell.xib */; };
50DEE0391BE7020900015741 /* UITableView+Yep.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50DEE0381BE7020900015741 /* UITableView+Yep.swift */; };
50DEE03B1BE70B5100015741 /* UICollectionView+Yep.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50DEE03A1BE70B5100015741 /* UICollectionView+Yep.swift */; };
50E114F41ABBF9CC00F13000 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E114F31ABBF9CC00F13000 /* Models.swift */; };
50E114F91ABC137A00F13000 /* YepServiceSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E114F81ABC137A00F13000 /* YepServiceSync.swift */; };
50E114FC1ABC549300F13000 /* ContactsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E114FA1ABC549300F13000 /* ContactsCell.swift */; };
@@ -563,6 +565,8 @@
50DEE0301BE339B000015741 /* LoadMoreTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = LoadMoreTableViewCell.xib; path = Views/Cells/LoadMore/LoadMoreTableViewCell.xib; sourceTree = "<group>"; };
50DEE0341BE3720F00015741 /* LoadMoreCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LoadMoreCollectionViewCell.swift; path = Views/Cells/LoadMore/LoadMoreCollectionViewCell.swift; sourceTree = "<group>"; };
50DEE0351BE3720F00015741 /* LoadMoreCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = LoadMoreCollectionViewCell.xib; path = Views/Cells/LoadMore/LoadMoreCollectionViewCell.xib; sourceTree = "<group>"; };
50DEE0381BE7020900015741 /* UITableView+Yep.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UITableView+Yep.swift"; path = "Extensions/UITableView+Yep.swift"; sourceTree = "<group>"; };
50DEE03A1BE70B5100015741 /* UICollectionView+Yep.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UICollectionView+Yep.swift"; path = "Extensions/UICollectionView+Yep.swift"; sourceTree = "<group>"; };
50E114F31ABBF9CC00F13000 /* Models.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Models.swift; path = Realm/Models.swift; sourceTree = "<group>"; };
50E114F81ABC137A00F13000 /* YepServiceSync.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = YepServiceSync.swift; path = Services/YepServiceSync.swift; sourceTree = "<group>"; };
50E114FA1ABC549300F13000 /* ContactsCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ContactsCell.swift; path = Views/Cells/Contacts/ContactsCell.swift; sourceTree = "<group>"; };
@@ -987,6 +991,8 @@
5080EB1E1B93F932006F3C2D /* NSBundle+Yep.swift */,
50A820231B969B0F007CD30E /* NSTimeZone+Yep.swift */,
504F5E6E1B9F1F13006CE418 /* NSURLRequest+cURL.swift */,
50DEE0381BE7020900015741 /* UITableView+Yep.swift */,
50DEE03A1BE70B5100015741 /* UICollectionView+Yep.swift */,
);
name = Extensions;
sourceTree = "<group>";
@@ -2371,6 +2377,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
50DEE0391BE7020900015741 /* UITableView+Yep.swift in Sources */,
50894CFE1AEA5A78000981AF /* EditProfileViewController.swift in Sources */,
50CDBE421ACA9B4200459CE0 /* ChatRightImageCell.swift in Sources */,
5099B9C41AB9510D002F940B /* RankView.swift in Sources */,
@@ -2410,6 +2417,7 @@
502AE53D1AB87C0D005BD199 /* YepUserDefaults.swift in Sources */,
50F5AF881BBBB2AE0033C9BC /* HorizontalLineView.swift in Sources */,
50EB8CC41AE89F12001AC1EE /* ChatRightVideoCell.swift in Sources */,
50DEE03B1BE70B5100015741 /* UICollectionView+Yep.swift in Sources */,
50AACECF1BB93336004DD54B /* FeedMediaView.swift in Sources */,
50DEE02C1BE209FF00015741 /* DeletedFeedConversationCell.swift in Sources */,
50D4D0DB1AFA825B005AEB6F /* MediaControlView.swift in Sources */,
+23
View File
@@ -0,0 +1,23 @@
//
// UICollectionView+Yep.swift
// Yep
//
// Created by nixzhu on 15/11/2.
// Copyright © 2015 Catch Inc. All rights reserved.
//
import UIKit
extension UICollectionView {
var yep_isAtTop: Bool {
return contentOffset.y == -contentInset.top
}
func yep_scrollsToTop() {
let topPoint = CGPoint(x: 0, y: -contentInset.top)
setContentOffset(topPoint, animated: true)
}
}
+24
View File
@@ -0,0 +1,24 @@
//
// UITableView+Yep.swift
// Yep
//
// Created by nixzhu on 15/11/2.
// Copyright © 2015 Catch Inc. All rights reserved.
//
import UIKit
extension UITableView {
var yep_isAtTop: Bool {
return contentOffset.y == -contentInset.top
}
func yep_scrollsToTop() {
let topPoint = CGPoint(x: 0, y: -contentInset.top)
setContentOffset(topPoint, animated: true)
}
}
@@ -10,6 +10,33 @@ import UIKit
class YepTabBarController: UITabBarController {
enum Tab: Int {
case Conversations
case Contacts
case Feeds
case Discover
case Profile
var title: String {
switch self {
case .Conversations:
return NSLocalizedString("Chats", comment: "")
case .Contacts:
return NSLocalizedString("Contacts", comment: "")
case .Feeds:
return NSLocalizedString("Feeds", comment: "")
case .Discover:
return NSLocalizedString("Discover", comment: "")
case .Profile:
return NSLocalizedString("Profile", comment: "")
}
}
}
var previousTab = Tab.Conversations
struct Listener {
static let lauchStyle = "YepTabBarController.lauchStyle"
}
@@ -37,19 +64,12 @@ class YepTabBarController: UITabBarController {
}
*/
// Set Titles
if let items = tabBar.items {
let titles = [
NSLocalizedString("Chats", comment: ""),
NSLocalizedString("Contacts", comment: ""),
NSLocalizedString("Feeds", comment: ""),
NSLocalizedString("Discover", comment: ""),
NSLocalizedString("Profile", comment: ""),
]
for i in 0..<items.count {
let item = items[i]
item.title = titles[i]
item.title = Tab(rawValue: i)?.title
}
}
@@ -65,10 +85,63 @@ class YepTabBarController: UITabBarController {
}
}
// MARK: - UITabBarControllerDelegate
extension YepTabBarController: UITabBarControllerDelegate {
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
guard
let tab = Tab(rawValue: selectedIndex),
let nvc = viewController as? UINavigationController else {
return
}
// tap
if tab != previousTab {
previousTab = tab
return
}
switch tab {
case .Conversations:
if let vc = nvc.topViewController as? ConversationsViewController {
if !vc.conversationsTableView.yep_isAtTop {
vc.conversationsTableView.yep_scrollsToTop()
}
}
case .Contacts:
if let vc = nvc.topViewController as? ContactsViewController {
if !vc.contactsTableView.yep_isAtTop {
vc.contactsTableView.yep_scrollsToTop()
}
}
case .Feeds:
if let vc = nvc.topViewController as? FeedsViewController {
if !vc.feedsTableView.yep_isAtTop {
vc.feedsTableView.yep_scrollsToTop()
}
}
case .Discover:
if let vc = nvc.topViewController as? DiscoverViewController {
if !vc.discoveredUsersCollectionView.yep_isAtTop {
vc.discoveredUsersCollectionView.yep_scrollsToTop()
}
}
case .Profile:
if let vc = nvc.topViewController as? ProfileViewController {
if !vc.profileCollectionView.yep_isAtTop {
vc.profileCollectionView.yep_scrollsToTop()
}
}
}
/*
if selectedIndex == 1 {
if let nvc = viewController as? UINavigationController, vc = nvc.topViewController as? ContactsViewController {