Swift로 다이어리 어플리케이션 만들기 ~ 달력 1편 보이기~

15158 단어 XcodeSwiftcalendariOS

응용 프로그램 개발의 가장 난관.달력


이미 고전이라고 할 수 있겠지.
응용 프로그램 개발의 가장 난관, 달력으로 응용 프로그램을 만들어라.

카탈로그

  • 그 1 달력 표시편
  • 2 Realm 가져오기
  • 3 Realm 활용 편
  • 환경

  • Xcode 8.2.1
  • Swift 3.0
  • CocoaPods 1.1.1
  • 전제로 삼다


    CocoaPods는 이미 가져온 것으로 설명합니다.
    CocoaPods이 페이지가 배포되지 않은 경우 1단계와 2단계를 수행합니다.

    항목 만들기



    새 프로젝트를 만들기 위해 Xcode를 시작합니다.이번에는 "DiarySampler"형식으로 프로젝트를 만듭니다.

    CocoaPods 배포


    이번 사용JBDatePicker.
    README 보면서 할 수 있는 사람은 이렇게 하세요.
    Terminal을 열고 명령을 DiarySampler.xcodeproj 레벨로 이동합니다.
    Terminal
    pod init
    
    에서 기술한 장면은 다음 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 둘레를 분석하도록 한다.고급 기사는vim을 써도 괜찮아요.
    Podfile
    # Uncomment the next line to define a global platform for your project
    # platform :ios, '9.0'
    
    target 'DiarySampler' do
      # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
      use_frameworks!
    
      # === この下の1行を追加 ===
      pod 'JBDatePicker'
    
    
      # Pods for DiarySampler
    
      target 'DiarySamplerTests' do
        inherit! :search_paths
        # Pods for testing
      end
    
      target 'DiarySamplerUITests' do
        inherit! :search_paths
        # Pods for testing
      end
    
    end
    
    Podfile 아래 줄에 use_franeworks! 을 추가하여 저장합니다.
    그리고 종착역을 열다
    Terminal
    pod install
    
    에서 설명한 대로 해당 매개변수의 값을 수정합니다.

    설치할 수 없는 경우


    "JBDatePicker"로 표시되며 설치되지 않을 때가 거의 없습니다.
    이 문장을 참조하면 다음 두 명령으로 Cocoapods를 초기화하는 것 같습니다.
    [iOS Swift 입문 #230] [!]pod'JBD DatePicker'에 Uble를 설치하여 사양을 찾을 수 없습니다.
    Terminal
    sudo rm -fr ~/.cocoapods/repos/master
    pod setup
    

    프로젝트 파일 시작


    방금 열린 Xcode를 "Command+Q"로 한 번 닫으세요.(Xcode 파일이 열릴 때 정상적으로 시작할 수 없습니다.)

    검색기에서 DiarySampler 프로젝트 파일로 이동하여 열기Podfile.
    ※ 포드 설치를 실행하면 흰색 아이콘의'xcworkspace'를 반드시 열어야 합니다.
    정상적으로 시작하면 일반적인 프로젝트 파일 외에 Pods라는 디렉터리가 있습니다. 내용을 확인하면 JBDatePicker가 들어왔습니다.

    이 곳에서'Command+B'로 구축을 확인해 보니 오류가 없습니다.

    ViewController에 View 추가


    그럼 드디어 라이브러리로 달력을 표시할 거예요.
    열기GoogleMaps를 열고 달력을 표시하려는 ViewController에 뷰 위젯을 삽입합니다.

    그리고 사용자 정의 클래스를 열고 방금 설정한 View의 사용자 정의 클래스를 "JBDatePickerView"로 설정합니다.Class 섹션에 DiarySampler.xcworkspace 을 입력하고 Enter 키를 누르면 아래 모듈에 Main.storyboard 이 자동으로 입력됩니다.

    ※ 모듈은 자동으로 입력되므로 수동으로 입력하지 마십시오!
    수동 입력이 성공적으로 구축되지 않을 수 있습니다.

    .swift 파일에 쓰기 처리


    드디어 JBDatePickerView 파일에 쓰기 처리를 하려고 합니다.
    README 파일을 보고 글을 썼어요. 아시는 분은 앞으로 가세요.
    우선 새로운 모듈JBDatePicker을 사용하기 때문이다.ViewController.swift 아래에 다음 문장을 쓰세요.
    ViewController.swift
    import JBDatePicker
    
    다음은 스토리보드에 있는 부품을 사용하기 때문에 IBOutlet으로 부품과 코드를 연결합니다.
    ViewController.swift
    @IBOutlet var datePicker: JBDatePickerView!
    
    이번에는 import 이 등급의 부품에 대해 import UIKit 라고 명명했다.JBDatePickerView라고 썼으니 연관성을 잊지 마세요!

    그 다음은 델게이트의 설정입니다.
    우선, Dellegate 사용을 선언합니다.
    ViewController.swift
    class ViewController: UIViewController, JBDatePickerViewDelegate {
    
    우선 사용을 선언합니다datePicker.이것만 있으면 이 반에서 Delegate를 사용할 수 있습니다.
    ViewController.swift
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            datePicker.delegate = self //この行を追加
    
        }
    
    
    다음은 @IBOutlet에서 delegate는self(이 종류 자체)라고 성명한다.현재, 이 DatePicker의delegate가 이 클래스에 존재한다는 것을 명확히 할 수 있습니다.
    ViewController.swift
        func didSelectDay(_ dayView: JBDatePickerDayView) {
            print("date selected: \(dayView.date!)")
    
        }
    
    마지막으로delegate방법JBDatePickerViewDelegate방법을 씁니다.
    이 메서드는 didSelectDay (= 날짜를 선택할 때) 에서 호출됩니다.이번에는 컨트롤러에 날짜와 시간을 출력할 수 있습니다.

    주문.


    이번에는 README에서viewDidLayoutSubviews에 쓰기 처리를 요청받았기 때문에 먼저 적어 둡니다.
    ViewController.swift
        override func viewDidLayoutSubviews() {
            super.viewDidLayoutSubviews()
    
            datePicker.updateLayout()
        }
    

    완성!실행!


    그럼 한 번 완성했으니 구축하고 실행하세요!

    날짜가 이상하게 표시되다


    날짜가 하루 엇갈렸다.시간대 등과 관련이 있는 것 같습니다.
    @IBOutlet에서 datePicker를 선언한 다음 줄에 다음 코드를 추가합니다.
    ViewController.swift
        lazy var dateFormatter: DateFormatter = {
            var formatter = DateFormatter()
            formatter.timeStyle = .none
            formatter.dateStyle = .medium
            return formatter
        }()
    
    또한 다음과 같이 didSelectDay를 수정합니다.
    ViewController.swift
        func didSelectDay(_ dayView: JBDatePickerDayView) {
            print("date selected: \(dateFormatter.string(from: dayView.date!))")
        }
    
    현재 날짜 형식을 통해 한 번 볼 수 있으며 날짜만 제출할 수 있습니다.

    코드 전모


    ViewController.swift
    //
    //  ViewController.swift
    //  DiarySampler
    //
    //  Created by Ryo Eguchi on 2017/01/01.
    //  Copyright © 2017年 Ryo Eguchi. All rights reserved.
    //
    
    import UIKit
    import JBDatePicker
    
    class ViewController: UIViewController, JBDatePickerViewDelegate {
    
    
        @IBOutlet var datePicker: JBDatePickerView!
    
        lazy var dateFormatter: DateFormatter = {
            var formatter = DateFormatter()
            formatter.timeStyle = .none
            formatter.dateStyle = .medium
            return formatter
        }()
    
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            datePicker.delegate = self
    
        }
    
        override func viewDidLayoutSubviews() {
            super.viewDidLayoutSubviews()
    
            datePicker.updateLayout()
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        func didSelectDay(_ dayView: JBDatePickerDayView) {
            print("date selected: \(dateFormatter.string(from: dayView.date!))")
        }
    
    
    }
    
    

    거기까지 2


    2 Realm 가져오기

    좋은 웹페이지 즐겨찾기