ViewControllerのテンプレとファイル生成時にAlso Create Storyboardを追加してみた
この記事はフラー Advent Calendar 2019の 2 日目の記事です。
弊社のiOSチームでは現在、 ViewControllerとStoryboardを1:1にする形で開発しています。
その中でいちいち、ViewControllerにテンプレコードを入れて、ViewControllerとStoryboardを作ってという、作業に嫌気がさしたので、ViewControllerを作成したら一連の作業が終わっているテンプレートを作りたいと思います。
1.ViewControllerにお約束コードを入れる
お約束コードというほどではないんですが、普通に作るとこうですね
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
/* 以下略 */
}
まずコメント消すの面倒だなと。
あと社内でXcode11からの変更を鑑みてMARK:
をきちんと入れようという話になったので、それもテンプレに含めたいなと。
意: // MARK:
を入れるとエディタで区切り線を入れられるよ
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_release_notes
まあここは他でもまとめられているのでさっくりと行きます。
以下の階層にXcodeのテンプレート群があります。
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates
そこのSource
フォルダ下にCocoa Touch Class.xctemplate
があります。
元ファイルをいじるのは後が怖いので、今回はコピーしてEdited Cocoa Touch Class.xctemplate
を編集します。
Edited Cocoa Touch Class.xctemplate
内のUIViewControllerSwift
フォルダ下にある___FILEBASENAME___.swift
を編集します。
今回はコメントを削除して、MARK
を1つ追加しました。
//___FILEHEADER___
import UIKit
class ___FILEBASENAMEASIDENTIFIER___: ___VARIABLE_cocoaTouchSubclass___ {
// MARK: - View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
}
}
ちなみにテンプレートフォルダ内では編集できないので、適宜デスクトップなどに移して編集する必要があります
これでXcodeでファイルを追加するときに、編集したテンプレファイルを使用できます。
2. ViewControllerとStoryboardを同時生成する
まず、Edited Cocoa Touch Class.xctemplate
内のUIViewControllerSwift
フォルダをコピーして、UIViewControllerStoryBoardSwift
を作ります。
次に以下の階層にある___FILEBASENAME___.storyboard
をUIViewControllerStoryBoardSwift
に入れます。
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/User Interface/Storyboard.xctemplate
こんな感じになってれば、ViewControllerを作るときに、同名のStoryboardが生成されます。
ただ、このままだとStoryboardが必要ない場合も自動で生成されてしまうため、XIBファイルと同じようにチェックボックス式にします。
再びEdited Cocoa Touch Class.xctemplate
に戻り、TemplateInfo.plist
を開きます。
青枠で囲われている部分がAlso Create XIB file
の設定なので、コピーして、適宜書き換えます。
これでファイル生成時にAlso Create Storyboard file
を選択できるようになりました。
チェックボックスのデフォルトはTemplateInfo.plist
からお好みで。
ちなみに、 どっちが編集したテンプレか一目でみたい場合は、
Edited Cocoa Touch Class.xctemplate
内のTemplateIcon.png
を差し替えれば、
こんな感じで見分けられます。
終わりに
本当はStoryboardにView追加して、Classを紐付けて、Is Initial View Controller
にチェックつけるところまでやりたかったけど、sceneのIDを一意に振り分ける方法が見つからず断念しました。
本記事でテンプレート化できたのは半分までと言ったところなので、どうにかいい方法を見つけて次回の記事としたいと思います。
Author And Source
この問題について(ViewControllerのテンプレとファイル生成時にAlso Create Storyboardを追加してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/Yoshiatsu_Irei/items/fd487f5e6c8cf12f23bd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .