2017-04-06 2 views
1

UISegmentedControlsetTitleTextAttributes 메서드에서 iOS 10.3이 충돌합니다.iOS 10.3 UISegmentedControl setTitleTextAttributes 오류

질문 :

  1. 충돌하는 이유는 무엇입니까

    ?
  2. 해결책은 무엇입니까?

참고 : 이미 Apple에이 문제를보고했지만 아직 알려지지 않았습니다. https://openradar.appspot.com/31448227

샘플 코드 : @vedian는 지적

class ViewController: UIViewController { 

    @IBOutlet private weak var segmentedControl: UISegmentedControl! 

    override func viewDidLoad() { 
     super.viewDidLoad()   
     //Crash!   
     segmentedControl.setTitleTextAttributes([UIFont.systemFont(ofSize: 14.0) : NSFontAttributeName], for: .normal) 
    } 
} 

편집

, 그것은 [key : value]이 아닌 다른 방법으로 주위해야하지만, 코드 위의 은에 충돌하지 않습니다 iOS 버전은 10.3 이하입니다.

+0

모든 코드? 그게 더 쉬울거야. 모든 속성 또는 글꼴 만 시도 했습니까? –

+1

@Lu_ 물론 신속한 3.1로 마이그레이션되었지만 여전히 충돌합니다. 직접 테스트 할 수 있습니다. –

+0

@ BurhanuddinSunelwala 그것은 나를 위해 작동합니다. IBOutlet 연결을 확인하십시오. –

답변

3

의 당신은 문제가 아니라 애플의 원인이된다.

사전은 순서대로 작성됩니다. key 다음에 value입니다.

segmentedControl.setTitleTextAttributes([NSFontAttributeName : UIFont.systemFont(ofSize: 14.0)], for: .normal) 
+0

좋아, 이것을 시도 할 것이다. 나는 그것을 눈치 채지 못한다. 감사. 그런데 왜 신속한 2.3에서 작동합니까? –

0

사용

segmentedControl.setTitleTextAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 14.0)], for: .normal) 

대신

segmentedControl.setTitleTextAttributes([UIFont.systemFont(ofSize: 14.0) : NSFontAttributeName], for: .normal)