mirror of
https://github.com/wahyd4/Yep.git
synced 2026-08-23 03:36:34 +10:00
102 lines
3.2 KiB
Swift
102 lines
3.2 KiB
Swift
//
|
|
// ConversationsViewController.swift
|
|
// Yep
|
|
//
|
|
// Created by NIX on 15/3/16.
|
|
// Copyright (c) 2015年 Catch Inc. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import RealmSwift
|
|
|
|
class ConversationsViewController: UIViewController {
|
|
|
|
@IBOutlet weak var conversationsTableView: UITableView!
|
|
|
|
let cellIdentifier = "ConversationCell"
|
|
|
|
var realm: Realm!
|
|
|
|
lazy var conversations: Results<Conversation> = {
|
|
return self.realm.objects(Conversation).sorted("updatedAt", ascending: false)
|
|
}()
|
|
|
|
|
|
deinit {
|
|
NSNotificationCenter.defaultCenter().removeObserver(self)
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
realm = Realm()
|
|
|
|
NSNotificationCenter.defaultCenter().addObserver(self, selector: "reloadConversationsTableView", name: YepNewMessagesReceivedNotification, object: nil)
|
|
|
|
YepUserDefaults.nickname.bindListener("ConversationsViewController.Nickname") { _ in
|
|
self.reloadConversationsTableView()
|
|
}
|
|
|
|
YepUserDefaults.avatarURLString.bindListener("ConversationsViewController.Avatar") { _ in
|
|
self.reloadConversationsTableView()
|
|
}
|
|
|
|
view.backgroundColor = UIColor.whiteColor()
|
|
|
|
conversationsTableView.registerNib(UINib(nibName: cellIdentifier, bundle: nil), forCellReuseIdentifier: cellIdentifier)
|
|
conversationsTableView.rowHeight = 80
|
|
}
|
|
|
|
override func viewDidAppear(animated: Bool) {
|
|
super.viewDidAppear(animated)
|
|
|
|
// 这里才开始向用户提示推送
|
|
APService.registerForRemoteNotificationTypes(
|
|
UIUserNotificationType.Badge.rawValue |
|
|
UIUserNotificationType.Sound.rawValue |
|
|
UIUserNotificationType.Alert.rawValue, categories: nil)
|
|
}
|
|
|
|
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
|
|
if segue.identifier == "showConversation" {
|
|
let vc = segue.destinationViewController as! ConversationViewController
|
|
vc.conversation = sender as! Conversation
|
|
}
|
|
}
|
|
|
|
// MARK: Actions
|
|
|
|
func reloadConversationsTableView() {
|
|
println("reloadConversationsTableView")
|
|
conversationsTableView.reloadData()
|
|
}
|
|
}
|
|
|
|
|
|
extension ConversationsViewController: UITableViewDataSource, UITableViewDelegate {
|
|
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
|
return conversations.count
|
|
}
|
|
|
|
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
|
|
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! ConversationCell
|
|
|
|
let conversation = conversations[indexPath.row]
|
|
|
|
let radius = min(CGRectGetWidth(cell.avatarImageView.bounds), CGRectGetHeight(cell.avatarImageView.bounds)) * 0.5
|
|
|
|
cell.configureWithConversation(conversation, avatarRadius: radius)
|
|
|
|
return cell
|
|
}
|
|
|
|
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
|
|
tableView.deselectRowAtIndexPath(indexPath, animated: true)
|
|
|
|
if let cell = tableView.cellForRowAtIndexPath(indexPath) as? ConversationCell {
|
|
performSegueWithIdentifier("showConversation", sender: cell.conversation)
|
|
}
|
|
}
|
|
}
|
|
|