2016-10-11 5 views
2
나는 빠른 3에 다음 OBJ-C 코드로 변환하려고

원하는 변환 :스위프트 3 NSClassFromString가 ","구분자

UIView *targetView = nil; 
for (UIView *subView in self.navigationController.navigationBar.subviews) { 
    if ([subView isKindOfClass:NSClassFromString(@"UINavigationButton")]) { 
     for (UILabel *label in subView.subviews) { 
      if ([label isKindOfClass:[UILabel class]]) { 
       if ([label.text isEqualToString:"right"]) { 
        targetView = subView; 
        break; 
       } 
      } 
     } 
    } 
} 

CGRect rect = [targetView convertRect:targetView.frame toView:self.view]; 
CGPoint center_you_need = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect)); 

지금까지 내가 가진이 :

var targetView: UIView? = nil 
     for subView: UIView in self.navigationController!.navigationBar.subviews { 
      if (subView is NSClassFromString("UINavigationButton")) { 
       for label: UILabel in subView.subviews { 
        if (label is UILabel) { 
         if (label.text! == "right") { 
          targetView = subView 
         } 
        } 
       } 
      } 
     } 
     var rect = targetView!.convertRect(targetView!.frame, to: self.view) 
     var center_you_need = CGPoint(x: rect.midX, y: rect.midY) 

그러나이 오류 나에게 제공합니다 enter image description here

답변

2

하면이 시도 :

var targetView: UIView? = nil 
for subView in self.navigationController!.navigationBar.subviews { 
    if let navButtonClass = NSClassFromString("UINavigationButton") { 
     if subView.isKind(of: navButtonClass) { 
      for view in subView.subviews { 
       if let label = view as? UILabel { 
        if (label.text! == "right") { 
         targetView = subView 
        } 
       } 
      } 
     } 
    } 
} 
var rect = targetView!.convert(targetView!.frame, to: self.view) 
var center_you_need = CGPoint(x: rect.midX, y: rect.midY) 

그러나 가능하면 그러한 코드는 피해야합니다. 그런 다음 컨트롤러의 재산과 같은 UIBarButtonItem을 저장할 수 있습니다

  1. 는 사용자 정의 바 버튼 항목이 있다면,있는 CustomView 당신이 함께보기에 액세스하려고 할 수 전무 경우가있는 CustomView 속성

  2. 의 사용 valueForKey 방법 :

let targetView = barButtonItem.customView ?? barButtonItem.value(forKey:"view") 
+0

UIBarButtonItem의 중앙 위치를 가져 오는 다른 방법이 있습니까? – user2722667

+0

업데이트 된 답변을 살펴보십시오. 지금 작동하는지 확실하지 않지만 다음과 같이해야합니다. :) – alexburtnik