[iOS Application Develop] 새로운 프로젝트를 만든 후 개발할 때만 표시되는 ViewController 만들기

31366 단어 iOSSwiftXcodetech

프로젝트 새로 만들기 후 시작할 일


안녕하세요.
iOS 애플리케이션에서 개발한 팁 등을 조금 썼으면 좋겠다고 생각했어요.
이번에는 iOS 앱(주로 아이폰용)을 새로 개발할 때 내가 해 왔던 일을 짧게 정리하고 싶다.
그리고 제목은'경품'이라고 적었다.
지금 쓴 기사가'이렇게 해야 한다'는 말은 아니라는 것이다.
개인 앱을 만들 때 자주 사용하는 방법을 소개하는 거예요.
"아, 그게 편할 것 같아요."하시는 분들은 참고하세요.

뭘 준비하세요?


앱을 개발하고 싶으면 여러 개의 화면을 만들 거야.
A 화면에서 B 화면으로 옮겨가고 싶어요. C 화면에서 D 화면으로... 그러면 안에 화면이 들어가요.이렇게 되면 D화면을 설치한 뒤 동작을 확인하려면 위와 같은 조작을 해야 그 화면에 도달할 수 있다.
이곳의 낭비를 없애기 위해서는'한 번에 클릭해서 D화면에 들어가기'같은 개발용 화면을 미리 준비해야 한다.
이 글은 그 화면에 사용된 ViewController를 BootstrapViewController 라고 명명했다.Bootstrap 지금은 CSS 프레임워크 이름으로 유명하지만'시동된'이라는 뜻이 있어 지었다.
https://www.weblio.jp/content/bootstrap
이것은 단지 나 개인이 마음대로 지은 이름일 뿐이다
예를 들어'Entrance View Controller','Develop View Controller'같은 것, 또는 비교적 이해하기 쉬운 다른 이름.
현재 기사에는 BootstrapViewController라는 이름으로 쓰여 있다.

BootstrapViewController


먼저 이름이 BootstrapViewController인 ViewController 클래스를 만듭니다.
그리고 그거랑 같이 해요Bootstrap.storyboard.

BootstrapViewController.swift


비어 있는 것을 먼저 정의합니다BootstrapViewController.
class BootstrapViewController: UIViewController {

}

Bootstrap.storyboard


그리고 다음 이야기판의 내용은 이렇다.
BootstrapViewController ViewController 배치
전체 화면을 표 보기로 설정하고 스토리보드delegatedatasourceBootstrapViewController로 설정합니다.
테이블 뷰에서 Basic 스타일의 셀identifierrow로 설정하고 1개를 배치합니다.
스토리보드의 설정은 이것뿐이다.

미리 준비하다


제작BootstrapViewController된 콘텐츠입니다.

영역 및 행 정의


원조의 구조와 typealiasSectionRow를 사용하여 간단한 정의를 내렸다.
class BootstrapViewController: UIViewController {
    
+   private typealias Section = (String, [Row])
+   private typealias Row = (String, (UIViewController) -> ())
}
String는 영역과 행의 제목입니다.

테이블 뷰 구현에 사용

UITableViewDelegateUITableViewDataSource 테이블 뷰를 설치합니다.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 InfoMain 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 등으로 모형을 끼우면 간단한 테스트를 할 수 있을 것 같아요.

총결산


그래서 개인 앱을 만들 때 가장 먼저 사용하는 방법을 소개했다.
앱이 커지면 바로 커져요.
이미 모듈로 완성되었는데 삭제하시겠습니까?
게다가 "고장이 났으니 고치기 전에 다시 한 번 추가합시다"
용도에 따라 유지보수하는 것도 중요하다.
안녕히 계세요.

좋은 웹페이지 즐겨찾기