[ios  팁] could not launch 자신의 아이폰에서 앱 구동할때 오류


ios개발할 때 가끔씩 simulator에서 말고 직접 자신의 폰에서 앱을 구동해 보고 싶을 때가 있다. 이 포스팅에서는 자신의 아이폰에서 앱을 구동하는 사전 설정 부분은 다루지 않는다. 사전 설정이 끝났는데도 불구하고 아이폰을 mac에 연결후 xcode에서 run 버튼을 누르면 가끔씩 발생하는 could not launch.... 이 문구가 뜰때 어떻게 처리를 해야할지 해결방법을 포스팅 한다.



▲ 무슨 뜻인지 몰라도 이런 메시지가 뜬다면..대충 너의 앱을 실행 할 수 없다 그러니깐 아래 경로로 들어가서 설정을 해줘라 라는 뜻~


▲ 아이폰에서도 비슷한 오류가 뜬다. 신뢰할 수 없는 개발자라고 하는데 그럼 신뢰를 해주도록하자.

먼저 설정으로 들어가자.



▲ 설정으로 들어가서 일반이라는 메뉴를 클릭한다.




▲ 일반으로 들어오면 프로파일 및 기기관리라는 메뉴가 있다. 클릭하자.




▲  프로파일 및 기기관리라는 메뉴로 들어오면 자신의 메일을 볼 수 있다. 

일단 어디서 많이 낫이익은(?)메일이다 그러면 일단 클릭하자

그리고 많이 본 메일(개발자)을 신뢰함 이라고 클릭을 하자



▲  위와 같은 alert 창이 뜬다. 신뢰를 누르고 다시 앱을 아이폰에서 구동시켜 보자.




swift 두 가지 함수로 현재 날짜 구하기 DateFormatter와 Calendar


 개발을 하다보면 시간을 표시해야 할 일이 종종 생긴다. 날짜와 시간을 구하는 방법은 다양하다. 정말 무척이나 다양하다! 이번 포스팅에서는 DateFormatter 와 Calendar를 이용해서 날짜와 시간을 구하는 예제를 살펴보자.


1. DateFormatter 예제


    func getCurrentDateTime(){

        let formatter = DateFormatter() //객체 생성

        formatter.dateStyle = .long

        formatter.timeStyle = .medium

        formatter.dateFormat = "MMMM,dd yyyy" //데이터 포멧 설정

        let str = formatter.string(from: Date()) //문자열로 바꾸기

        lable.text = "\(str)"   //라벨에 출력

        

    }


2. Calendar예제


    func getSingle(){

        let date = Date()

        let calendar = Calendar.current //켈린더 객체 생성

        let year = calendar.component(.year, from: date)    //

        let month = calendar.component(.month, from: date)  //

        let day = calendar.component(.day, from: date)      //

        lable.text = "\(year) \(month) \(day)"

        dateCheck = "\(year)\(month)\(day)"

        print(dateCheck!)

    }



두개 예제를 프로젝트에 복사 붙여넣기 한다음에 이것저것 수정도해보고 print() 문으로 찍어서 확인도 해보자. 둘중에 편한거 쓰면 되겠다.



UIImagePickerController오류- 등잔 밑을 살피자


아이폰 어플 개발을 하던 중, 늘 사용하던 UIImagePickerController에 문제가 발생했다. 사진선택 버튼을 누르면 사진 라이브러리가 뜬다. 그리고 사진을 선택하면 선택한 사진이 imageView에 떠야하는데, imageView에 뜨질 않는 것이다. 구글링해보고, info.plist 뒤져서 사진 라이브러리 사용하겠다고 승인 처리도 해줬는데..계속 아래와 같은 오류가 떴다.

자세히보면 아래와 같다.

errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}

구글링 해보니 해결책 같은 답변도 보였다.

결론은 아니었다. 이럴때는 소스코드를 처음부터 보는게 상책이다. viewDidLoad를 보자마자 아차 싶었다. UIImagePickerController를 사용하려면 viewDidLoad 함수 안에 picker.delegate = self 라고 작성을해야 했다. 여기서 picker는 UIImagePickerController의 인스턴스다. 아무튼 등잔 밑이 어둡다는 속담이 틀린말은 아니라는 걸 깨달았다. 앞으로 꼼꼼히 천천히 잘 살펴봐야지.


이렇게 된김에 아주 초 간단하게 UIImagePickerController을 구현하는 법을 살펴보겠다. 

1.UIImagePickerController를 구현하려는 Class에서 UIImagePickerControllerDelegate와 UINavigationControllerDelegate를 상속받는다. 

2.viewDidLoad() 위쪽에 let picker = UIImagePickerController() 객체를 만들어 준다.

3.viewDidLoad 함수 안에 picker.delegate = self 

4. 사진 선택 버튼을 눌렀을때 사진 라이브러리 띄우기

 @IBAction func selectImage(_ sender: Any) {

        picker.allowsEditing = true //편집허용

        picker.sourceType = .photoLibrary //라이브러리 타입

        present(picker, animated: true, completion: nil) //띄우기

    }


5.사진 선택이 끝났을 때 호출되는 함수

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo     info: [String : Any]) { 

 if let image = info[UIImagePickerControllerEditedImage] as? UIImage{ self.imageView.image = image nextBtn.isHidden = false 


self.dismiss(animated: true, completion: nil) //선택완료후 닫아주기

 }


ios 10이상에서 navigation titleview를 커스터마이징 할때 발생하는 오류



이슈: navigation titleview를 커스터마이징 하면서 titleview에 터치이벤트를 걸어놨다. 잘작동한다. 문제는 titleview안에 addsubview로 다른 uiview를 넣었을때 네비게이션 바에서 보이지도 않았다. 


잘작동됨!



문제는


titleview 안에 다른 uiview들을 넣어줬을때 부모 uiview격인 titlview (파란색 배경)가 사라지고 당연히 터치이벤트도 동작하지 않는다.


과정: 버그 인지 모르고 관련 코드를 처음부터 끝까지 수십번 리딩했다.......ㅜㅜ 리딩하고 찍어보고 리딩하고 찍어보고..

       코드에 문제가 없다고 생각해서 구글 검색.. 이것도 1시간 넘게 검색했다... 찾아보니 단순한 ios 10이상에서 나타나는 버그라고 한다...그래서 해결은?



파일을 만들고 아래의 메서드를 오버라이드 해준다!


import UIKit


class MyUIView: UIView {


    override var intrinsicContentSize: CGSize {

        return UILayoutFittingExpandedSize

    }


}



uiview 객체를 만들때 위에서 만들었던 클래스를 사용한다.



잘나오는 것을 볼 수 있다.



+ Recent posts

티스토리 툴바