2012-02-17 3 views
3

나는 MonoTouch의 btouch 도구를바인딩 프로토콜

목표 - C 프로토콜을 사용하여 프로토콜을 결합하는 것을 시도하고있다 :

@protocol KalDataSource <NSObject, UITableViewDataSource> 
- (void)presentingDatesFrom:(NSDate *)fromDate to:(NSDate *)toDate delegate:(id<KalDataSourceCallbacks>)delegate; 
- (NSArray *)markedDatesFrom:(NSDate *)fromDate to:(NSDate *)toDate; 
- (void)loadItemsFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate; 
- (void)removeAllItems; 
@end 

BTouch 바인딩 :

[BaseType(typeof(UITableViewDataSource)] 
interface KalDataSource { 
    ... 
} 

을하지만이 btouch 오류가 발생합니다.

error CS0534: `Kal.KalDataSource' does not implement inherited abstract member... 

누락 된 멤버는 물론 GetCell 및 RowsInSection입니다. KalDataSource의 부분 클래스 구현을 만드는 방법을 생각했지만 소비자가 이러한 메서드를 정의 할 수 있도록 가상으로 만들 필요가 있습니다. 할프?

업데이트 : 설명이 끝나면 다른 UIKit 프로토콜에서 "상속 된"프로토콜을 즉시 바인딩 할 수없는 것으로 보입니다. 내가 여기에 버그가 제출 한 : btouch의 최신 버전으로

https://bugzilla.xamarin.com/show_bug.cgi?id=3526

+0

정확한 명령 줄은 무엇입니까? 나는 문제없이 유사한 것을 시도했다. (한번 속성에 누락 된')'을 추가했다. – poupou

+0

흠, 흥미 롭다. 어떤 속성이 빠졌는가? 빌드를위한 Makefile : https://gist.github.com/c40dc80b0253fd93d30b – Anuj

+0

누락 된 * 속성 * - 누락 된 닫는 * 괄호 * ;-)) 그리고 그것은 나를 위해 일했습니다. (또한 Miguel도 그렇습니다) 빌드 (빠른 테스트 용) – poupou

답변

0

를, 당신은 다음과 같이,이 경우에, 당신이 구현하는 프로토콜을 나열 할 수 있습니다 :이 [baseType 여기서를 사용하고 있음을

[BaseType (typeof (NSObject))] 
interface KalDataSource : UITableViewDataSource { 
} 

공지 사항 ]를 하위 클래스가 될 NSObject로 대체하고 대신 UITableViewDataSource에서 메소드를 인라인합니다.

+0

오류 + 전체 바인딩은 여기에 : https://gist.github.com/a62179321620afc38c9f – Anuj

+0

나는 나쁜 것 같아요, 내 생각 엔 ... 두 번째 인터페이스를 재정의하여 문제를 해결했습니다. ApiDefinition.cs 파일 내에서 – Kenny