[iOS Application Develop] 새로운 프로젝트를 만든 후 개발할 때만 표시되는 ViewController 만들기
프로젝트 새로 만들기 후 시작할 일
안녕하세요.
iOS 애플리케이션에서 개발한 팁 등을 조금 썼으면 좋겠다고 생각했어요.
이번에는 iOS 앱(주로 아이폰용)을 새로 개발할 때 내가 해 왔던 일을 짧게 정리하고 싶다.
그리고 제목은'경품'이라고 적었다.
지금 쓴 기사가'이렇게 해야 한다'는 말은 아니라는 것이다.
개인 앱을 만들 때 자주 사용하는 방법을 소개하는 거예요.
"아, 그게 편할 것 같아요."하시는 분들은 참고하세요.
뭘 준비하세요?
앱을 개발하고 싶으면 여러 개의 화면을 만들 거야.
A 화면에서 B 화면으로 옮겨가고 싶어요. C 화면에서 D 화면으로... 그러면 안에 화면이 들어가요.이렇게 되면 D화면을 설치한 뒤 동작을 확인하려면 위와 같은 조작을 해야 그 화면에 도달할 수 있다.
이곳의 낭비를 없애기 위해서는'한 번에 클릭해서 D화면에 들어가기'같은 개발용 화면을 미리 준비해야 한다.
이 글은 그 화면에 사용된 ViewController를
BootstrapViewController
라고 명명했다.Bootstrap
지금은 CSS 프레임워크 이름으로 유명하지만'시동된'이라는 뜻이 있어 지었다.이것은 단지 나 개인이 마음대로 지은 이름일 뿐이다
예를 들어'Entrance View Controller','Develop View Controller'같은 것, 또는 비교적 이해하기 쉬운 다른 이름.
현재 기사에는
BootstrapViewController
라는 이름으로 쓰여 있다.BootstrapViewController
먼저 이름이
BootstrapViewController
인 ViewController 클래스를 만듭니다.그리고 그거랑 같이 해요
Bootstrap.storyboard
.BootstrapViewController.swift
비어 있는 것을 먼저 정의합니다
BootstrapViewController
.class BootstrapViewController: UIViewController {
}
Bootstrap.storyboard
그리고 다음 이야기판의 내용은 이렇다.
BootstrapViewController
ViewController 배치전체 화면을 표 보기로 설정하고 스토리보드
delegate
와 datasource
에 BootstrapViewController
로 설정합니다.테이블 뷰에서 Basic 스타일의 셀
identifier
을 row
로 설정하고 1개를 배치합니다.스토리보드의 설정은 이것뿐이다.
미리 준비하다
제작
BootstrapViewController
된 콘텐츠입니다.영역 및 행 정의
원조의 구조와 typealias
Section
와 Row
를 사용하여 간단한 정의를 내렸다.class BootstrapViewController: UIViewController {
+ private typealias Section = (String, [Row])
+ private typealias Row = (String, (UIViewController) -> ())
}
String
는 영역과 행의 제목입니다.테이블 뷰 구현에 사용
UITableViewDelegate
및 UITableViewDataSource
테이블 뷰를 설치합니다.extension
하면 나중에 더 쉽게 볼 수 있어요.extension BootstrapViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return sections.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let section = sections[section]
return section.1.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let row = sections[indexPath.section].1[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "row", for: indexPath)
cell.textLabel?.text = row.0
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let row = sections[indexPath.section].1[indexPath.row]
row.1(self)
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return sections[section].0
}
}
여기서 가리키는 것은 didSelectRowAt:
시Row
에 정의된 블록 함수이다.매개변수에 자신(ViewController)을 지정합니다.
메인 인터페이스 변경
프로젝트 설정
TARGETS
>(プロジェクト名)
>General
>Deployment Info
을 Main Interface
로 변경합니다.(만약 여기에 변경이 없다면
Bootstrap
써라
여기까지 준비할 수 있다면 남은 것은 쓸 수밖에 없다.
이렇게 정의해 보세요
Main
의 배열.class BootstrapViewController: UIViewController {
private typealias Section = (String, [Row])
private typealias Row = (String, (UIViewController) -> ())
+ private let sections: [Section] = [
+ ("画面の確認", [
+ ("D画面", { bootstrapViewController in
+ let controller = // (D画面ViewControllerを生成する処理)
+ bootstrapViewController.present(controller, animated: true, completion: nil)
+ }),
+ ]),
+ ]
}
이런 화면이 나올 것 같아서요.
이렇게 단원을 클릭하면 한 번 클릭하면 D 화면으로 전환할 수 있다.
바로 확인하고 싶은 다른 화면이 있다면 로우의 배열을 늘려주세요.
class BootstrapViewController: UIViewController {
private typealias Section = (String, [Row])
private typealias Row = (String, (UIViewController) -> ())
private let sections: [Section] = [
("画面の確認", [
("D画面", { bootstrapViewController in
let controller = // (D画面ViewControllerを生成する処理)
bootstrapViewController.present(controller, animated: true, completion: nil)
}),
+ ("E画面を確認する", { bootstrapViewController in
+ let controller = // (E画面ViewControllerを生成する処理)
+ bootstrapViewController.present(controller, animated: true, completion: nil)
+ }),
]),
]
}
기타
여기까지. 화면 확인.
작은 방법을 만들 때의 동작 확인도 한다.
extension String {
// 空文字列だとnilが返るメソッド
func emptyToNil() -> String? {
return isEmpty ? nil : self
}
}
class BootstrapViewController: UIViewController {
private typealias Section = (String, [Row])
private typealias Row = (String, (UIViewController) -> ())
private let sections: [Section] = [
("画面の確認", [
("D画面", { bootstrapViewController in
let controller = // (D画面ViewControllerを生成する処理)
bootstrapViewController.present(controller, animated: true, completion: nil)
}),
("E画面を確認する", { bootstrapViewController in
let controller = // (E画面ViewControllerを生成する処理)
bootstrapViewController.present(controller, animated: true, completion: nil)
}),
]),
+ ("メソッドの確認", [
+ ("emptyToNil()の確認", { _ in
+ print("'ABC'が返るはず \( "ABC".emptyToNil() )")
+ print("nilが返るはず \( "".emptyToNil() )")
+ }),
+ ]),
]
}
는 이걸로 시동을 걸고 가볍게 두드리며'아, 기대대로 움직이네'를 본다.그리고 확인이 끝나면 삭제됩니다.이 동작 확인을 보류하고 싶으면 테스트 코드에 다시 쓰세요.
또 로그인, 로그아웃 등 상태를 한 번에 바꿀 수 있다고 적으면 편리하다.
("アカウント状態を変更する", [
("ゴールド会員になる", { _ in
// (ゴールド会員にする処理をここに書く)
}),
("シルバー会員になる", { _ in
// (シルバー会員になる処理をここに書く)
}),
("通常会員になる", { _ in
// (通常会員になる処理をここに書く)
}),
("ログアウト状態にする", { _ in
// (ログアウト処理をここに書く)
}),
]),
여기서 DI 등으로 모형을 끼우면 간단한 테스트를 할 수 있을 것 같아요.총결산
그래서 개인 앱을 만들 때 가장 먼저 사용하는 방법을 소개했다.
앱이 커지면 바로 커져요.
이미 모듈로 완성되었는데 삭제하시겠습니까?
게다가 "고장이 났으니 고치기 전에 다시 한 번 추가합시다"
용도에 따라 유지보수하는 것도 중요하다.
안녕히 계세요.
Reference
이 문제에 관하여([iOS Application Develop] 새로운 프로젝트를 만든 후 개발할 때만 표시되는 ViewController 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nkysyuichi/articles/b2c72710ab656a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)