티스토리 뷰
이번 포스팅은 Swift에서 가장 많이 사용하는 AlertController 에서 발생했던 이슈를 소개하려고 합니다.
보통 AlertController은 다음과 같이 사용할 것입니다.
아이폰에서는 정상 동작하지만 태블릿에서는 다음과 같은 에러가 발생합니다.
*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Your application has presented a UIAlertController (<UIAlertController: 0x7fea584110f0>) of style UIAlertControllerStyleActionSheet. The modalPresentationStyle of a UIAlertController with this style is UIModalPresentationPopover. You must provide location information for this popover through the alert controller's popoverPresentationController. You must provide either a sourceView and sourceRect or a barButtonItem. If this information is not known when you present the alert controller, you may provide it in the UIPopoverPresentationControllerDelegate method -prepareForPopoverPresentation.'
태블릿에서는 AlertController 의 위치를 설정해 줘야합니다.
예를 들어
1) 화면의 정중앙에 호출합니다.
2) BarButtonItem 기준으로 호출합니다.
3) 기타 등등..
제가 해결한 방법은 화면의 중앙에 위치하도록 하였습니다.
// swift 4
if let popoverController = alert.popoverPresentationController {
popoverController.sourceView = self.view
popoverController.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
popoverController.permittedArrowDirections = []
}
만약 "viewDidLoad()"에서 "UIAlertController()"를 호출 시 아래와 같은 경고가 발생 할 경우도 있습니다.
Warning: Attempt to present <UIAlertController: 0x7f8b2260a010> on <UIAlertActionTest.ViewController: 0x7f8b25103260> whose view is not in the window hierarchy!
현재 뷰가 생성 되기도 전에 View 을 호출해서 나오는 이슈입니다. "viewDidLoad()” 에서 호출 한 것을 “viewDidAppear()”에서 호출하면 이슈 발생하지 않습니다.
AlertController는 "ViewDidAppear()" 에서 생성합니다.
UIAlertController 호출하는 다른 방식은 참고 사이트에 자세히 소개되어있습니다.
참고
'프로그래밍 > iOS' 카테고리의 다른 글
[SWIFT] 화면 회전 적용하기 (0) | 2018.01.16 |
---|---|
[SWIFT] UIWebView와 WebKit 그리고 ScrollView을 활용한 Pager View (0) | 2018.01.12 |
[Error]앱 스토어 등록 과정 중 Distribution 에러가 발생하는 경우 대응 방안 (0) | 2018.01.04 |
[SWIFT] Text 중간에 색상 넣기 (0) | 2018.01.03 |
[SWIFT] 앱과 다른 앱 연결 (0) | 2018.01.02 |
- DI
- push
- swift
- missionchina
- java
- flutter
- issue
- RXjava
- view
- IT
- MCC
- 알고리즘
- Kotlin
- 안드로이드
- IOS
- 고시문
- Android
- missioon
- 스코어헬퍼
- 고시문헬퍼
- 디자인패턴
- 점수판
- Android Studio
- 미션차이나센터
- 임용고시
- 탁구
- 선교
- 패턴
- 코틀린
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |