300x250 iOS112 Delegate 사용 다른 뷰컨트롤러에 있는 함수 또는 프로퍼티를 특정 시점에 호출해야 할 때 사용 프로토콜의 선언은 데이터를 전달하는 곳에서 선언하고 데이터를 받는 곳에서 채택한다. // 데이터 전달.h @protocol myDelegate @optional @property (nonatomic) NSString * count; - (void)move; @end @interface 데이터전달 : UIViewController @property (nonatomic) idmyDelegate; @end --------------------------------------------------------------- // 데이터 전달.m // move가 실행되어야 하는 시점에서 - (IBAction)cancle:(id)send.. 2022. 3. 28. 뷰 계층 관리 Zindex(Z position)을 이용하여 뷰의 계층을 제어 할 수 있다. 이렇게 A와 B의 위치를 교환하여 A뷰를 앞으로 전환 할 수 있다. 단, 같은 부모뷰에 속해 있어야 한다.(같은 계층에 있어야 한다.) 코드를 이용하는 두가지 방법이 있다. Method 1 AView.bringSubviewToFront(BView) 뷰의 인덱스 위치를 변경 해준다. Method 2 Bview.layer.zPosition = 1 제일 앞에 보이는 뷰의 포지션을 움직여 준다. 예를 들어 이렇게 버튼이 뒤에 있고 뷰가 앞에 있을 때, button.layer.zPosition = 1000 이라고 해주면 이렇게 버튼이 위로 오게 되지만 터치이벤트는 움직이기 전 뷰에 가려지지 않은 부분에서만 동작한다. 하지만 , self... 2022. 3. 25. UILable cornerRadius 적용이 안될 때는 clipToBounds를 활성화 해주자 2022. 3. 16. UIView 값이 틀릴 때 Color값이 틀릴 때 기본적으로 뷰가 초기화 될 때는 디폴트로 들어가는 컬러값이 존재한다. 그러나 내가 지정한 컬러가 아닌 값이 나올 때는 해당 뷰에 컬러값을 지정해주기만 하면 된다. Frame값이 틀릴 때 해당 뷰 높이(가로)에 영향을 주는 뷰 중 높이(가로)가 가변이 된다면 그 뷰가 제대로 값이 맞아 떨어지는지 확인하자. 2022. 3. 14. UIButton 상태에 따른 속성 적용(storyboard) Button States 부분을 보면 버튼 상태에 따라 다르게 속성을 지정할 수 있다고 한다. 단, 텍스트 또는 이미지에 대한 속성만 state config를 통해 적용이 가능한 것 같다. 버튼 타입을 custom으로 바꾸면 state config 설정 칸이 생기는데 Default일때와 highlighted, selected, Disabled 상태를 선택해서 버튼 state에 따른 속성을 지정해주면 된다. @interface TestViewController () @property (weak, nonatomic) IBOutlet UIButton * btn; @end @implementation TestViewController - (void)viewDidLoad { [super viewDidLoad]; .. 2022. 2. 24. JSON ecdoing / decoding JSON encoding : 어떤 정보의 형태나 형식을 다른 형태나 형식으로 변환 JSON decoding : 인코딩의 반대 작업 우리는 인코딩과 디코딩을 위해 Encodable 또는 Decodable을 채택하여 인.디코딩을 진행하며, 이 두 작업과 동일한 기능을 'Codable'을 채택하여 진행 할 수 있다. JSON 타입을 인.디코딩 하기위해 JSONEncoder 와 JSONDecoder를 사용한다. (swift4 이전에는 JSONSerialization을 이용했었음.) 기본적인 인.디코딩 방법 JSONEncoder struct Grocery: Codable { var name: String? var points: Int var importCountry: String? } var grocery = G.. 2022. 2. 24. CustomView File's Owner 기준으로 작성하였습니다. file's owner = 말그대로 이 xib 파일의 주인을 말하며 이 파일에 구현되는 view는 file's owner의 클래스를 따르고, 분리되어 작성된다고 이해하면 됩니다. 화면을 분리하여 재사용성을 높이고 유연한 코드 유지 보수가 가능합니다. 준비 1. customView의 내용을 담을 .swift 파일 생성 2. customView UI를 만들 .xib 파일 생성 3. storyboard에 가져다 쓸 뷰이기 때문에 사이즈와 레이아웃에 제약을 받지 않기 위해 safeArea와 size 속성을 변경한다. File's Owner의 File inspector - Interface Builder Document의 'Use Safe Area Layout Gu.. 2022. 2. 23. ERROR 모음 Missing '@end'해결방법 .h / .m 파일에서 발생 오타가 없는지 찾는다. @end 가 있는지 체크 다른 파일에 @end가 빠져있는지 확인한다 unrecognized selector sent to instance Attempted to dereference an invalid ObjC Object or send it an unrecognized selector. must register a nib or a class for the identifier or connect a prototype cell in a storyboard" 아울렛이 잘 연결되어 있는지 확인 아울렛 또는 함수 명의 오류가 없는지 확인 아울렛 중복이 없는지 확인 별도 클래스가 연결되어 있는 객체가 있다면 클래스명을 지우고 다.. 2022. 2. 17. 타이머 @IBOutlet weak var authCountLb: UILabel! var timer: Timer? var time = 180 @IBAction func sendAuthNumTap(_ sender: UIButton) { authNumBtn.backgroundColor = UIColor(red: 43, green: 55, blue: 67, alpha: 1) time = 180 startTimer() } // 타이머 카운팅 @objc func scheduled() { if time < 0 { stopTimer() } let minutes = time / 60 let seconds = time % 60 authCountLb.text = String(format: "%02d : %02d초 남음", minu.. 2022. 1. 25. 이전 1 ··· 7 8 9 10 11 12 13 다음 300x250