본문 바로가기

Tech

(55)
[iOS]Day 26 - Notification 벌써 4주차 끝... 시간이 너무 빠르다 4개월 밖에 남지 않았다 더 열심히 하자 Notification Notification? iOS는 보안이 강력하고 철저하기로 유명하다 iPhone 유저라면 App 실행 전 항상 권한 요청을 받아 본 경험이 있을 것이다 alert, sound , badge등의 알림을 받으려면 User의 권한 허용이 무조건 필요하다 Notification은 서버에서 보내는 것과 앱 내부에서 보내는 것으로 나뉜다 Remote Notification App Store에서 다운로드 받은 앱들에서 알림을 받아 본 경험이 있을 것이다 서버에서 기기로 알림을 보내는 방식이다 Local Notification과는 달리 보내는 시간과 내용이 일정하지 않다 LocalNotification 앱 내..
[iOS] Day 25 - Protocol Protocol 배우기 전 이름부터 무섭게 생겨서 움찔했지만 꼭 필요한 친구였다 오늘도 달려보자 Protocol 어원 그대로 규약이다 -> 실제 구현은 프로토콜이 채택된 곳에서 이행한다 DelegatePattern을 구현하기 위해 이용한다 특정 컨틀롱에서 발생하는 이벤트를 효율적으로 관리하기 위해 Delegate에게 위임하고, 실제 이벤트 발생시에 Delegate가 callBack method를 호출해준다 Optional Protocol @objc protocol viewPresentableProtocol { var navigationTitleString: String {get set} var backgroundColor: UIColor { get } static var identifier: Strin..
[iOS] Day 25 - UIPickerView & WebView 언젠가는 완벽하게 UX UI 코드까지 완벽하게 오늘도 달려보자 UIPickerView 이전 게시물에 잠깐 등장했던 UIPickerView 저번에는 Storyboard로 구현했지만 이번에는 코드로 구현하겠다 class LottoViewController: UIViewController { @IBOutlet weak var numberTextField: UITextField! var lottoPickerView = UIPickerView() let lottoList: [Int] = Array(1...1025).reversed() override func viewDidLoad() { super.viewDidLoad() numberTextField.tintColor = .clear numberTextField...
[iOS] Day 24 - Property Observer 과제가 머리속에 멤돈다 답을 줄 듯 말 듯하다 iOS 입덕부정기인건가... Property Observer 스타크래프트 정찰병 observer를 생각해보자 저장 프로퍼티에서 사용되고 프로퍼티 값을 관찰(->observer)하다가 변경되었을 때 호출된다 get set 이 아닌 willSet, didSet 사용 willSet -> 값이 바뀌기 전에 사용 didSet -> 값이 바뀐 후 사용 struct BMI { var nickname: String { willSet(newNickaname) { print("유저 닉네임이 \(nickname)에서 \(newNickaname)로 변경될 예정") } didSet { print("유저 닉네입이 \(oldValue)에서 \(nickname)으로 변경 되었다") } ..
[iOS] Day 23 - Computed Property 어찌저찌 구현이 안되는 것을 잡아가고 있다 첫 이미지가 구현이 안되는건 왜 안될까.. 거의 다 온 느낌이지만 알듯 말듯 하다 Computed Property(연산 프로퍼티) 저장 Property 값을 연산(계산)하여 반환하는 역할을 한다 get은 읽기전용으로 단독으로 쓰일 수 있지만 set은 단독으로 사용 불가능하다 getter : 프로퍼티 값을 가져온 후 계산 후에 반환해준다 setter : 새로운 값(newValue - default parameter)을 가져온 후 저장 프로퍼티에 있는 값을 변경해준다 순서 1. setter에 새로운 값이 들어오면 저장 프로퍼티의 값을 변경(setting)해준다 2. setter에서 연산한 후 반환 3. getter에서 setter에서 반환된 값을 가지고 연산 후 반..
[iOS] Day 22 - Xcode Tip, bundle File 생성 방법 과제를 하면서 어쩌면 나는 뇌가 없고 출력만 하는 생명체인건가 깊은 생각을 해보았다 1. 무작정 하지 말자 2. 구조를 그림으로 짜고 덤비자 3. 코드간 연결고리를 보도록 하자 Xcode Tip option + cmd + 좌우 화살표 => 코드블록 접는 단축키 option + cmd + [] => 코드 라인 변경 /// 내용 => option키 누르고 해당 코드 누르면 내용에 해당하는 것이 summary에 기록 되어있음 MARK: "내용" => 구분선 만들 수 있다, 목록에서 MARK 찾을 수 있음 option + 원하는 파일 클릭 => Editor 분리 (자주 분리하는 사람 1인으로 꿀팁) cmd + L => 라인 검색 ctrl + cmd + E => 코드 동시 수정 option + cmd + L =>..
[iOS] Day 19 - 첫 화면 구현 App의 첫 화면 구현시 분명 첫 화면 구현은 했는데 simulator에서 검은 화면만 뜬 경험이 있을 수도 있다 해결점을 알아보자 첫 화면 구현 //시작 화면전에 통제 가능 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { //true이면 ViewController , false SearchTableViewController //SceneDelegate에 있으면 안되는 코드 -> 시작할때마다 false //UserDefaults.standard.set(false, forKey: "First") -> 다른 화면에 배치해야한다 //Use..
[iOS] Day 19 - 데이터 전달 아무튼 전달만 어떤 방식으로든 전달만 하자 플룻을 코에 낀 랄프처럼 데이터 전달 //1. 값 전달 var movieData: string? 값을 받을 공간인 프로퍼티를 생성해준다 //2. 값 전달 - vc가 가지고 있는 프로퍼티에 데이터 넣기(초기화) vc.movieData = movieList.movie[indexPath.row] 데이터를 전달해준다 title = movieData?.title viewDidLoad에서 전달 받은 데이터를 화면에 보여준다
[iOS] Day 18 - Property 문법 용어가 다 비슷비슷한 것 같다 집중해서 이해하고 사용하도록 하자 ProPerty 저장 / 연산 프로퍼티가 있지만 이 포스팅에서는 저장 프로퍼티에 대해서 포스팅하려 한다 저장 프로퍼티 struct의 경우 struct DrinkStruct { let name: String var count: Int var size: DrinkSize } let drinkClass = DrinkClass(name: "스무디", count: 2, size: .venti) 초기화를 하지 않아도 initializer를 자동 생성해준다 class 의 경우 init이 필수이기 때문에 struct과 다르기 때문에 선언과 동시에 초기화를 하거나 옵셔널로 선언하여 nil로 초기화 해주어야한다 Lazy 웬지 닉값할 것 같다 지연저장 프..
[iOS] Day - 18 화면 전환 코드 구현 아쉽게도 필자는 이미 한국인이다 storyboard로 화면 전환 됐을 때는 좋았지.. 코드로 구현하는 숙제가 남았을 뿐 화면 전환 (Code) 저번 게시물에서 segue를 통해 화면전환을 구현 해보았다 마우스로 단 클릭 두번에 이번에는 코드로 구현해보자 1. 스토리보드를 가져오자 -> storyboard의 이름을 가져옴 2. 스토리 보드 안에 뷰컨트롤러 가져옴 -> 이때 Identifier 설정이 중요한데 Identifier 설정을 해주지 않는 다면 스토리보드 안에 뷰컨틀롤러로 가져오지 못 한다 2.5 를 실행하지 않아도 화면전환이 되지만 화면 전환 방식을 정해줄 수 있다 3. persent 설정 시 화면은 나타남 dismiss 설정 시 화면은 사라짐 Push //1. let storyboardFile ..