일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SWIFT
- MVVM
- UICollectionView
- 애니메이션
- tableView
- 리펙터링
- Xcode
- HIG
- 리펙토링
- collectionview
- RxCocoa
- clean architecture
- 리팩토링
- combine
- Refactoring
- swiftUI
- rxswift
- uiscrollview
- ios
- ribs
- 스위프트
- map
- uitableview
- Observable
- swift documentation
- 클린 코드
- Clean Code
- UITextView
- Protocol
- Human interface guide
- Today
- Total
목록분류 전체보기 (1630)
김종권의 iOS 앱 개발 알아가기
1. 탭 바 컨트롤러 생성 - Contents Controller가 아닌 Container Controller(직저 콘텐츠를 표현하지 않으면서 다른 뷰 컨트롤러를 유기적인 관계로 제어) - 수평적인 관계를 조정 (네비게이터 컨트롤러는 수직적 관계 조정) - 화면 하단에 "Tab Bar"가 표시 됨 - 맨 앞에 존재 (네비게이터보다 앞에 위치) 1) 생성 - Tab Bar Controller 또는 [Embed In] -> [Tab Bar Controller] 2) 탭 바 컨트롤러에 특정 뷰 컨트롤러 연결 - tab bar controller을 연결하려는 view Controller에 드래그 앤 드랍 - view controllers선택 ("Relationship Segue"라고 함) ※ 탭 바의 순서를 바..
1. 사파리 앱 호출 - 사파리 앱 그대로 호출하는 것이므로 구현하기 가장 단순 - 장점 : ATS(info.plist에 HTTP보안 허가) 설정이 필요없음, 구현이 쉬움 - 특징 : 기존 뷰에서 여는게 아닌, 새로 앱을 실행하는 것 1 2 let url = URL(string:"https://ios-development.tistory.com") UIApplication.shared.open(url!, options: [:]) 2. SFSafariViewController - 컨트롤러 객체에 해당 (스토리 보드 UI에 삽입하는 것이 아니라 단순 코드 호출) - 특징 : 기존 뷰에서 여는 것 1 2 3 4 5 import SafariServices @IBAction func btnAction(_ sende..
1. 네트워크에 대한 기본 지식 1) 통신을 위한 프로그래밍 방향 - 소켓 방법 : 명시적으로 끊을 떄까지 지속해서 연결을 유지하는 방법 (TCP, UDP를 통한 화상통화, RPG 게임) - 비연결성 방법 : HTTP/HTTPS * 앞으로 비연결성 방법에 관한 내용만 진행 2) 웹 서비스의 종류 (웹 서비스 : 웹 페이지 같은 것이 아닌 데이터만을 주고받을 수 있도록 설계된 모듈) - SOAP(Simple Object Access Protocol) : HTTP, HTTPS, SMTP등의 프로토콜들을 통해 XML(eXtensibal Markup Language)형태의 메시지 주고 받는 것 - RESTful (Representational State Transfer) : HTTP프로토콜을 통해 조금더 쉬운 ..
1. 테이블 뷰가 나온 배경 - 방대한 콘텐츠를 표현하기 위함 - 테이블 뷰의 완성 = 테이블 뷰 + 섹션1(테이블 뷰 셀 + 콘텐츠 뷰) + 섹션2(테이블 뷰 셀 + 콘텐츠 뷰) + 섹션n(...) 2. 일반적인 테이블 뷰 - 테이블 뷰 셀의 종류 : Basic, Right Detail, Left Detail, Subtitle, Custom 1) 테이블 뷰 생성 : UITableViewController - 통째로 테이블 뷰 생성 : 스토리보드에서 UITablewView 드래그엔 드롭 cf) UITableViewController가 아닌, UIViewController에서 테이블 뷰 생성 : (1) ~ (4)작업 (delegate, datasource, table view 각 추가) (1) "Table..
1. Delegate패턴 1) 개념 - 프로토콜로 미리 기능에 대한 것을 구현한 후, 그 프로토콜을 구현한 클래스에 기능을 위임시킨 것 1 2 3 4 5 6 7 8 9 10 11 12 class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet var tf: UITextField! override func viewDidLoad() { // tf객체의 대리자를 ViewController에게 위임 self.tf.delegate = self } } extension ViewController: textFieldBeginEditing(_ textField: UITextField) { // } -> 텍스트필드의 기능을 viewController에..
* 메시지 전달의 종류 - 단순 알림창 - 로컬 알림 - 서버 알림 (여기서는 다루지 않음) 1. 단순 알림창 - 앱이 실행중에만 가능 (fore ground에서만 가능) 1) 생성 - DispatchQueue.main.async : 메인스레드(UI관련)에서도 async작업을 사용할 수 있도록 하는 것 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DispatchQueue.main.async { let alert = UIAlertController(title:"알림", message: "UIAlertController알림창", preferredStyle: .alert) // .actionSheet사용가능 let ok = UIAlertAction(title: "ok", style: .de..
*소스코드 출처 : 꼼꼼한 재은씨의 스위프트 기본편 1. 직접 전달 방식 (동기 방식) - 자료형은 NSMutableDictionary을 쓰는게 가장 전달받기 쉬움 1) 프레젠테이션 방식 & 네비게이션 컨트롤러 방식 (인스턴스화 할 때 다운캐스팅 해줘야 하는 것 주의) 1 2 3 4 5 6 7 8 9 10 11 12 // VC1 class ViewController: UIViewController { var text = "이것이 넘겨질 데이터 내용" @IBAction func onClick(_ sender: Any) { guard let rvc = self.storyboard?.instantiateViewController(identifier: "RVC") as? ResultViewController e..
- 네비게이션 컨트롤러를 주로 쓸 것(계층관계) 1. 프레젠테이션 방식 - UIViewController클래스를 상속받은 클래스에서의 화면전환 방법 1) 이동 present(_:animated:completion:) completion은 트레일링 클로저로 구현하며, 화면 전환이 완전 끝난 후에 호출해 주는 비동기 함수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import UIKit class ViewController: UIViewController { @IBAction func moveNext(_ sender: Any) { // 스토리 보드 객체 가져오기 (인자 : 이름, 읽어들일 위치) let storyboard: UIStoryboard? = UISt..