2014-06-06 1 views
6

숨기기 :apple과 같이 공용 인터페이스를 선언하는 방법은 무엇입니까? 또 다른 방법, 구현 그냥 UILabel의 클래스와 같은

class UILabel : UIView, NSCoding { 

    var text: String! // default is nil 
    var font: UIFont! // default is nil (system font 17 plain) 
    var textColor: UIColor! // default is nil (text draws black) 
    var shadowColor: UIColor! // default is nil (no shadow) 
    var shadowOffset: CGSize // default is CGSizeMake(0, -1) -- a top shadow 
.... 
} 

을하지만 또한 기능을 init을하고있다 있지 않습니다 같은 클래스를 정의합니다. 컴파일러에서 경고합니다. 애플과 같은 일을 어떻게 할 수 있습니까? 구현을 숨기고 인터페이스 만 선언하십시오. 감사.

+0

좋은 것입니다 "나는 내 구현을 숨길 수있는 방법" 문제. "소스 코드없이 Swift 라이브러리를 어떻게 배송합니까?" 컴파일 할 "헤더"는 어디서 오는 것입니까? 몰라. – Thilo

+0

나는 해결책을 얻을지도 모르지만 자바의 인터페이스 나 프로토콜처럼해라. 감사. – Huangzy

+0

가능한 복제본 : Swift : 어떻게 정적 라이브러리 (Objective-C .h의 공용 헤더 아날로그)에 대한 외부 인터페이스를 만들 수 있습니까?] (http://stackoverflow.com/questions/24070722/swift-how-can-i-create -external-interface-for-static-library-public-headers-an) – Thilo

답변

2

UILabel은 Swift에서 구현되지 않습니다.

여기서 보는 내용은 UILabel의 Objective-C 헤더 파일에서 파생 된 것입니다.

0

클래스 이름을 변경하고 시도하십시오.

class MyClass : UIView, NSCoding { 

     var text: String! // default is nil 
     var font: UIFont! // default is nil (system font 17 plain) 
     var textColor: UIColor! // default is nil (text draws black) 
     var shadowColor: UIColor! // default is nil (no shadow) 
     var shadowOffset: CGSize // default is CGSizeMake(0, -1) -- a top shadow 
     } 
1

당신은 프로토콜에 대해 자세히 살펴해야합니다.

protocol UIViewProtocol { 
    var text: String { get } 
    ... 
} 

을하고 수업 시간에 나중에 참조 :이처럼 프로토콜을 선언 할 수 있습니다 애플

class MyClass : UIViewProtocol { 
    .... 
} 

참조 : iOS 8 Protocols

관련 문제