Storyboard를 최대한 사용하지 않고 Swift로 Giithub을 한눈에 볼 수 있는 issues와pull requests의 앱을 제작한다
그래서 관리하고 싶어서 swift로 프로그램을 만들었어요.
이번에는 스위프트를 터치해보고 싶어서 스토리보드는 되도록 쓰지 않고 코드라는 이단적인 방법으로만 만들었다.
스토리보드에서 할 수 있는 일을 코드로 쓰기 때문에 코드가 늘어나고 전망이 나빠지기 때문에 어떻게 하는 스와프트에서 어려운 일을 정리해야 한다.
저는 개인적으로 Storyboard를 별로 좋아하지 않아서 코드와playground의 일파를 잘 사용하고 싶어요.스토리보드는 편하지만
(이런 거)
개인이 세부 팀 내에서 쓰면 좋은 애플리케이션이기 때문에 출시하지 않고 티스트 플라이트로 보낼 계획이다.
bonegollira/GitOdo
그럼, 이것이 내가 신경 쓰는 중점이다
뷰와 논리 분리
Storyboard를 사용하지 않으면View의 속성 설정과 논리가 혼동
extension로 구분됩니다protocol ViewComponentLayout {
func render ()
}
// Viewに関するコード
// funcは基本的にconfigure__***とautolayout__***の2種類
extension TableHeaderView: ViewComponentLayout {
// configure__***でプロパティのセット
func configure__self () {
self.contentView.backgroundColor = UIColor.whiteColor()
}
func configure__titleLabel () {
self.titleLabel.font = UIFont(name: "Helvetica-Bold", size: 12)
self.titleLabel.textColor = UIColor.blackColor()
self.titleLabel.setTranslatesAutoresizingMaskIntoConstraints(false)
}
// autolayout__***でautolayoutの設定
// Cartographyを使ってます
func autolayout__titleLabel () {
layout(self.titleLabel) { titleLabel in
titleLabel.left == (titleLabel.superview!.left + 20) ~ 250
titleLabel.right == (titleLabel.superview!.right - 20) ~ 250
titleLabel.bottom == titleLabel.superview!.bottom - 5
}
}
// このview自体はaddSubviewせずrenderを呼ぶ
// addSubview、configure、autolayoutを設定
func render () {
self.contentView.addSubview(self.titleLabel)
self.configure__titleLabel()
self.autolayout__titleLabel()
}
}
// ロジックのコード
class TableHeaderView: UITableViewHeaderFooterView {
class var identifier: String {
return "TableHeaderView"
}
// viewパーツの初期化はこちらで
let titleLabel = UILabel()
var sectionName: String? {
get {
return self.titleLabel.text
}
set {
self.titleLabel.text = newValue
}
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override init(reuseIdentifier: String?) {
super.init(reuseIdentifier: reuseIdentifier)
self.render()
}
}
쓰여 있다extension에서 Storyboard를 통해 완성된 View 설정class를 통해 논리쓰여 있다.
그냥 스토리보드의 강점이에요.
ViewController 상호 연결오류가 너무 많아요.
잘못 썼어요. swift랑 상관없어요.
SourceKit가 붕괴되어 자꾸만
orz
코코팟으로 넣을 수 없나요?
Swift로 쓴 라이브러리 지원은 코코팟 버전 0.36에서 시작한 것 같아요.
사용하는 버전이 0.35이기 때문에 업데이트를 피합니다
http://www.infoq.com/jp/news/2015/01/cocoapods-adds-swift-framework
Dictionary 안에 있으면 안 돼요?
하면, 만약, 만약...
@selector는 어떻게 썼습니까?
UIBarButtonItem(
barButtonSystemItem: .Add,
target: self,
action: "someMethod:"
)
스트링으로 쓰면 돼요.학급 방법은 어떻습니까?
class Class {
class func classMethod () {
// do something...
}
}
클래스 변수는 어떻게 합니까?
// getを省略してるで
class var identifier: String {
return "tableViewCell"
}
http://qiita.com/takkyun/items/384013e52f404773893b 에서 속성을 상세하게 정리했다.
사용자 정의된 UItable ViewCell이 init 설치에 대해 불평을 받습니까?
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
// を実装すると
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
// を求められる
및 NSNull()를 설치하지 않으면 오류가 발생합니다.이것을 쓰면 바로 움직여서 원인을 모르겠다.선언만 한 하늘의 Dictionary를 만들고 싶다고요?
옵티올까지 합치면 빙글빙글 돌기 때문에 번거롭기 때문에 Aray와 Dictionary에 대해서는 최대한 빈 값을 입력해 초기화하세요.
// こっちをしたくない
var list: [String: String]?
// けどこうするとエラー
var list: [String: String] = []
// なのでこうする
let list = [String: String]()
추기
@akuraru선생님이 가르쳐 주셨어요.
var list: [String: String] = [:]
할 수 있어.UItable ViewDataSource를 설치하고 있습니까?
required정의된 does not conform to protocol 'UITableViewDataSource' 방법이 없기 때문이다.swift 버전 업그레이드 됐어요?매개 변수의 Optional 지정이 바뀌었고 웹상의 낡은
UITableViewDataSource 방법을 복제하면 실행하려고 해도 오류가 발생할 수 있습니다.곱다라니
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
}
보전의 형식으로 넣다.그나저나 나는 타자를 칠 때 틀렸다는 말을 들었다.
생략된 형식의 3가지 연산자는 사용하지 않습니까?
UITableViewDataSource 사용할 수 없을 것 같아요.쓸 수 없음
:?추기
@YoshimasaAoki선생님이 가르쳐 주셨어요.
let str = nil :? "string"및 let str = nil ?? "string" 지원didSet을 정의한 녀석, init에서 초기화해도 안 나오나?
// init内で初期化してもdidSetは呼ばれない
var prop: Bool {
didSet {
println(prop)
println(oldValue)
}
}
override init () {
// init内でセットしてもdidSetは呼ばれない
self.prop = true
super.init()
매크로는 어떻게 정의합니까?
public func rgba(r: Int, g: Int, b: Int, a: CGFloat = 1.0) -> UIColor {
let red = CGFloat(r)
let green = CGFloat(g)
let blue = CGFloat(b)
return UIColor(
red: CGFloat(red / 255),
green: CGFloat(green / 255),
blue: CGFloat(blue / 255),
alpha: a
)
}
스위프트는 리팩터 안 되나요?
사용할 수 없음
Autolayout의 설정 시기는 어디에 적당합니까?
?? 다 합쳐서 init 그런데 원래 어느 타이밍이 좋을까요?init의 실현에 Required가 요구됩니까?
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
쓰면 용서받을 수 있는데, 왜?
Reference
이 문제에 관하여(Storyboard를 최대한 사용하지 않고 Swift로 Giithub을 한눈에 볼 수 있는 issues와pull requests의 앱을 제작한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bonegollira/items/d3979f2d7697b63ee3ae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)