Xcode 9 ベータ版をダウンロードした後、ファイル テンプレート システムの変更に気付きました。
たとえば、2 つのファイルを作成する単純なテンプレートがありました (おそらく、そのようには機能しないはずです)。ベースファイル名は
___FILEBASENAME___.swift
と
___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 キーを押します。これを行うと、出力は次のようになります。
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)
}
}
}
問題は、Xcode 9 でテンプレートの内容が変更されたことです (プレイグラウンドでテンプレートを使用するもの、とにかく初心者がプレイグラウンドでテンプレートを使用する方法は?)。
問題に戻ると、テンプレートからファイルを作成した後、TableCell.swift は同じように見えますが、この変更により TableCellView.swift がワイルドになります。
___FILEBASENAME___表示
新しくなる
___ファイルベース名___
したがって、TableCellView を作成すると、次のようになります。
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)
}
}
}
相互に依存関係を持つ複数のファイルを作成すると、問題はより複雑になります。たとえば、TableCellViewControllerDelegate へのデリゲートを持つ TableCellManager があります。
TableCellManagerViewControllerDelegate
代わりに
TableViewControllerDelegate
___FILEBASENAME___ は、スコープに応じて置き換えられます。新しく作成されたファイルがたとえば
___FILEBASENAME___View.swift
キーワード「Table」を使用すると、TableView.swift が作成されます - ___FILEBASENAME___ は「Table」ではなく「TableView」です
それを処理する方法があれば誰か教えてもらえますか?___KEYWORD___のような新しいものがあるかもしれませんか?新しいファイルの作成時に、古いバージョンの Xcode で ___FILEBASENAME___ のように機能するキーワードを入力したいと考えています。ヘルプ!