모바일앱199 autologin btn_box.setBackgroundImage(UIImage(named: "box"), for: .normal) btn_box.setBackgroundImage(UIImage(named: "checkBox"), for: .selected) 1. Button으로 체크박스 흉내내기 안드로이드에서는 따로 CheckBox라는 widget이 제공되어 편리했는데 xcode에서는 checkbox는 없고 button밖에 안보인다.. 찾아보니 button을 커스텀하여 만들어야하는데 stackoverflow에서 조금 간단히 체크박스같은 버튼을 만들 수 있는 방법을 제시했다 (https://stackoverflow.com/questions/41344895/the-best-way-to-use-checkbox-ios-swif.. 2022. 1. 10. 강제업데이트의 로직 강제업데이트와 선택업데이트는 앱이 시작될때 app delegate에서 앱의 API통신으로 버전체크를 하면서 결정된다 API에 담기는 앱의 버전에 대한 정보는 2가지가 담겨있다. 바로 이 앱의 최소 버전과 최신 버전 에 대한 정보다 currentVersion : 현재 기기의 버전 minVersion : 이 앱이 지원하는 최소버전 latestVersion : 이 앱의 최신버전 변수값이 위와 같을 때, 업데이트에는 3가지 루트가 있다 1. 강제업데이트 2. 선택업데이트 3. none 강제업데이트 : 이 기기버전이 지원하는 최소버전보다 낮을 경우 선택업데이트 : 이 기기의 버전이 최소버전이상이고 최신버전보다는 낮을 때, 업데이트 혹은 나중에 업데이트할수있도록 선택하는 경우 none : 아무것도 안하는 경우 코드.. 2022. 1. 8. Notification Center Notification Center 1. 이 액션이 진행되었으니 담당자들은 처리바람. 2. 담당자 수신 완료, 처리하겠음 1. Post -> 이 액션이 진행되었으니 담당자들은 처리바람 NotificationCenter.default.post(name: .doItSomeThing, object: nil) 포스트 -> name에 해당하는 자들에게 각자 일을 수행하라고 시키는 것 doItSomeThing은 name에 해당(동작하라는 게 아님) name: 일처리하는 스텝의 이름 스탭마다 일거리는 다르다. - 일거리와 이름 세팅하기 @objc func printSomeThing(_ notification: Notification){ print(“do it something”) } 하는 일은 프린트 해주는 것뿐이고.. 2022. 1. 8. (뷰의 이동) push와 present 안녕하세요 오늘은 앱을 개발하는 과정에서 기본적으로 요구하는 화면전환에 대해서 알아보겠습니다. 기본적으로 화면을 전환하는 방식은 Navigation을 이용해서 Stack처럼 쌓아가는 방식과 그냥 위에 띄우는 Present방식 이렇게 2가지가 있어요 Navigation은 push 으로 화면을 띄우고 Pop으로 제거한다. Present는 Present로 화면을 띄우고 Dismiss로 제거한다. !! Present방식은 뒤로가기가 따로 생기지 않기때문에 개발하면서 직접 만들어줘야한다. https://0urtrees.tistory.com/43 iOS 네비게이션컨트롤러 화면전환 기능 코드구현하기 안녕하세요 민군입니다! ^-^ 저는 최근 부스트코스 에이스 과정에 참여하게 되었는데요. 오늘은 부스트코스 에이스 학습내.. 2022. 1. 6. (뷰의 이동) Segue를 연결하는 3가지 방법 segue 세그웨이를 연결하는 방법은 3가지가 있다. 1. 스토리보드에서 UIbutton을 배치하고 ctrl 키를 누르고 목적지가 될 뷰컨트롤러에 드래그를 하면 액션 세그창이 생성됨. 원하는 방식을 선택하면된다. 2. performSegue 메소드를 이용하여 연결하기 (storyboard + code) 스토리보드에서 출발하는 viewController에서 도착하는 viewController를 연결한뒤 생기는 연결 선(세그웨이)를 클릭하면 identifier를 설정해주고 코드상에서 연결하는 방법 코드상에서는 prepare와 Perform Segue 메소드를 이용해 행동을 정의할 수 있다. prepare override func prepare(for segue: UIStoryboardSegue, sender.. 2022. 1. 5. 접근제한자 private fileprivate internal public open 접근 제한자 헝용 범위 private : 같은 클래스 fileprivate : 같은 소스 파일(.swift) internal : 같은 모듈(framework) or 같은 프로젝트 public : 모듈 외부까지 가능 open : 모듈 외부, 상속 및 override가능(확장 가능) 선언하지 않을시 디폴트는 internal 접근 제한자 일반적으로 단일 대상으로 특정 앱을 만드는데, 이 앱의 접근은 앱의 모듈 외부에서 사용하게 만들 필요가 없다. 그렇기 때문에 기본값은 internal이다. 하지만, 외부에서 해당 모듈의 코드를 비공개 하고 싶은 경우 fileprivate이나 private 둘 중 하나로 설정해야한다. 클래스에 붙이는 접근 제한자의 의미는 살짝 다르다. open class -> 다른 모듈에서 해.. 2022. 1. 5. CustomCell 만들기 (미완성) - ViewController 준비 + Identity inspector에 class 설정 - TableView 배치 + AutoLayout - TableViewCell을 TableView에 배치 - Cell 선택 - Attribute Inspector에 Identifier에 이름설정 - UI요소로 만들어둔 TableViewCell과 IBOutlet 링크하기 - CustomCell 세부 UI 설정 -> 넣고싶은 것들 넣기 (미완성) 2021. 12. 26. 싱글턴 프로그래밍 디자인 패턴 Singleton App전역에서 접근 가능한 인스턴스 XXXManager, shared 라는 이름을 달고 있는 경우가 많음 다른 디자인패턴과 마찬가지로 잘 쓰면 약이되지만 잘못쓰면 안 좋을 수 있음 class UserInfo { static let shared: UserInfo = UserInfo() UserInfo.shared.name = self.nameField.text self.nameLabel.text = UdserInfo.shared.name self.percentageLabel.text = UserInfo.shared.scorePercentageText 인스턴스를 생성시, 같은 메모리의 위치를 확인 할 수 있다. 2021. 12. 24. 와일드카드 식별자 와일드카드 패턴이란? - 값을 해체하거나 무시하는 패턴중 하나입니다. - 매개변수에서 많이 사용했던 와일드카드 식별( _ )을 사용한다는것은 이 자리에 올것이 무엇이든 상관하지 말라는 뜻입니다. - 와일드카드 식별자가 위치한 곳의 값은 무시해라라는 뜻 - 이 패턴은 for구문이나, switch구문에 많이 사용됩니다. switch구문에서의 사용 let string: String = "ABC" switch string { case _: print(string) } let optionalString: String? = "ABC" switch optionalString { case "ABC"?: print(optionalString) //optional("ABC")가 출력 case _?: //ABC빼고 나머지 .. 2021. 12. 20. for 문에서의 제어전달문 보충 for num in 0...8 { if num % 2 == 0 { continue } print(num) } // 결과: 1, 3, 5, 7 for num in 0...8 { if num % 2 == 0 { break } print(num) } // 결과: 0, 1, 2 var sum = 0 for i in 0...10{ if i == 3 { break } print("\(i)") sum += 1 } print("sum: \(sum)") // sum: 3 2021. 12. 16. 이전 1 ··· 8 9 10 11 12 13 14 ··· 20 다음