2017-06-29 6 views
8

Xcode 9 betaをダウンロードした後、私はファイルテンプレートシステムの変更に気付きました。Xcode 9のカスタムテンプレートはどのように変更されましたか?

たとえば、私は2つのファイルを作成していたシンプルなテンプレートを持っていました(おそらくそのようにはうまくいかないはずです)。ベースファイル名

ある___ FILEBASENAME ___

迅速___ FILEBASENAME ___ View.swift

とそのTableCell.swiftとTableCellView.swiftを作成するには、ここでのコードは次のとおりです。

// 
// ___FILENAME___ 
// ___PROJECTNAME___ 
// 
// Created by ___FULLUSERNAME___ on ___DATE___. 
//___COPYRIGHT___ 
// 

import Foundation 
import UIKit 

class ___FILEBASENAME___: UITableViewCell { 

    let mainView = ___FILEBASENAME___View() 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: style, reuseIdentifier: reuseIdentifier) 
     setupCell() 
     contentView.addSubview(mainView) 
     mainView.setupView() 
    } 

    fileprivate func setupCell() { 
     backgroundColor = UIColor.clear 
     selectionStyle = .none 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

} 

とビューファイル:

// 
// ___FILENAME___ 
// ___PROJECTNAME___ 
// 
// Created by ___FULLUSERNAME___ on ___DATE___. 
//___COPYRIGHT___ 
// 

import Foundation 
import UIKit 
import SnapKit 

fileprivate struct Constants { 

} 

class ___FILEBASENAME___View: UIView { 

    func setupView() { 
     setupSelf() 
    } 

    fileprivate func setupSelf() { 
      snp.makeConstraints { (make) in 
       make.leading.trailing.top.bottom.equalTo(0) 
     } 
    } 

} 

EXのための名前を追加し、...

メニューを私はちょうど

新しいファイルからテンプレートを選んれたこのファイルを作成します。 TableCellを押してEnterキーを押します。さて問題は、Xcodeの9で、彼らは初心者が使用する方法、遊び場でテンプレートと何か(テンプレートで物事を変え、ある

import Foundation 
import UIKit 

class TableCell: UITableViewCell { 

    let mainView = TableCellView() 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: style, reuseIdentifier: reuseIdentifier) 
     setupCell() 
     contentView.addSubview(mainView) 
     mainView.setupView() 
    } 

    fileprivate func setupCell() { 
     backgroundColor = UIColor.clear 
     selectionStyle = .none 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

} 

import Foundation 
import UIKit 
import SnapKit 

fileprivate struct Constants { 

} 

class NewCellView: UIView { 

    func setupView() { 
     setupSelf() 
    } 

    fileprivate func setupSelf() { 
     snp.makeConstraints { (make) in 
      make.leading.trailing.top.bottom.equalTo(0) 
     } 
    } 

} 

:私はこれを行うとき、今私の出力はこのように見えましたプレイグラウンドのテンプレートはとにかく?)。

これで、テンプレートからファイルを作成した後、TableCell.swiftは同じように見えますが、この変更によってTableCellView.swiftがワイルドになります。

import Foundation 
import UIKit 
import SnapKit 

fileprivate struct Constants { 

} 

class TableCellViewView: UIView { 

    func setupView() { 
     setupSelf() 
    } 

    fileprivate func setupSelf() { 
     snp.makeConstraints { (make) in 
      make.leading.trailing.top.bottom.equalTo(0) 
     } 
    } 

} 
:私は作成したとき、それはこのようになりますTableCellView

___FILEBASENAME___View

は今、新たな

___FILEBASENAME___

になります

今の問題は、私は例えば互いに依存関係を持つ複数のファイルを作成するときに、私はTableCellViewControllerDelegateに委譲してTableCellManagerを持って、より複雑になり、ファイルを作成するときに、今ではこの

のように見えますTableCellManagerViewControllerDelegate

代わり

ただ

TableViewControllerDelegate

新しく作成されたファイルは、例えばある場合

___FILEBASENAME___は、スコープに応じて置換された

___ FILEBASENAME ___ View.swift

は、キーワード "表" を使用してTableView.swiftを作成する - ここで___FILEBASENAME___ "表" ではありませんしかし、 "TableView"

誰も私にそれを扱う方法があると教えてもらえますか? おそらく___KEYWORD___のような新しいものがありますか?新しいファイルの作成時に、古いバージョンのXcodeで___FILEBASENAME___のように動作するキーワードを入力したいとします。助けて!

答えて

10

私は、Xcodeの9のための私のgithubの上の実用的なソリューションを持っているベータ4がそれをチェックアウト:私はここからの解決策だhttps://github.com/reni99/Xcode-VIPER-Template

を:あなたが探しているものをhttps://github.com/infinum/iOS-VIPER-Xcode-Templates/tree/master/VIPER%20Templates/Module.xctemplate/UIViewController

は、この変数です:___VARIABLE_moduleName___

必要に応じてTemplateInfo.plistを調整してください。

・ホープこのことができます:)私が探していたまさにです

乾杯

+1

を!どうもありがとうございました! –

+0

問題ありません:)うれしかった! –

関連する問題