トップ «前の日記(2016-11-30) 最新 次の日記(2016-12-02)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|

2016-12-01 [Swifty]MVCのModel

Try! Swift 2016での発表『文化を調和させる: 関数型プログラミング、プロトコル志向プログラミング、オブジェクト指向プログラミングの優れたテクニックを取り入れる』の手法をXcodeの新規プロジェクト(iOS / Application / Master-Detail Application)で作成されたソースコードに適用してたことをシリーズで発表する。

発表では、データをViewControllerのインスタンス変数として保持したが、自分流では必ずModel(Dataコントローラ)を用意しているので、今回もそうした。

class Document: NSObject {
    static let sharedInstance: Document = {
        let instance = Document()
        return instance
    }()
    
    private override init() {
    }
    
    private let hand = Hand()
}
class MasterViewController: UITableViewController {
 
    var detailViewController: DetailViewController? = nil
    let document = Document.sharedInstance
 
    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.leftBarButtonItem = self.editButtonItem
 
        let addButton = UIBarButtonItem(barButtonSystemItem: .add,
            target: self, action:
            #selector(MasterViewController.addNewCard(sender:)))
        self.navigationItem.rightBarButtonItem = addButton
        if let split = self.splitViewController {
            let controllers = split.viewControllers
            self.detailViewController
                = (controllers[controllers.count-1]
                as! UINavigationController).topViewController
                as? DetailViewController
        }
    }
    :

データをViewControllerのプロパティにしてしまうと、データ管理ができないので、自分は必ずDocumentクラスを用意するようにしている。

_ ソースコード

GitHubからどうぞ。
https://github.com/murakami/workbook/tree/master/ios/Hand - GitHub

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

トップ «前の日記(2016-11-30) 最新 次の日記(2016-12-02)» 編集