我正在尝试在我的Xamarin for iOS项目中使用iOS库iCarousel。我在XCode中创建了静态库,并将其添加到Xamarin iOS Binding项目中。尝试从lib .a文件定义导出。但是我对Objective-C没有任何经验,所以我在iOS Binding Project中的导出声明有困难(可以在我的目标项目中用作dll)。 我尝试使用monotouch-binding-generator来生成所需的声明,但是在编译iOS绑定项目后我遇到了很多错误。这是我对C#的声明。
[BaseType (typeof (UIView))]
interface iCarousel {
[Export ("id<iCarouselDelegate>")]
IBOutlet Id<iCarouselDelegate> { get; set; }
[Export ("type")]
iCarouselType Type { get; set; }
[Export ("perspective")]
float Perspective { get; set; }
[Export ("decelerationRate")]
float DecelerationRate { get; set; }
[Export ("scrollSpeed")]
float ScrollSpeed { get; set; }
[Export ("bounceDistance")]
float BounceDistance { get; set; }
[Export ("scrollEnabled")]
bool ScrollEnabled { get; set; }
[Export ("bounces")]
bool Bounces { get; set; }
[Export ("scrollOffset")]
float ScrollOffset { get; set; }
[Export ("offsetMultiplier")]
float OffsetMultiplier { get; }
[Export ("contentOffset")]
SizeF ContentOffset { get; set; }
[Export ("viewpointOffset")]
SizeF ViewpointOffset { get; set; }
[Export ("numberOfItems")]
int NumberOfItems { get; }
[Export ("numberOfPlaceholders")]
int NumberOfPlaceholders { get; }
[Export ("currentItemIndex")]
int CurrentItemIndex { get; set; }
[Export ("currentItemView")]
UIView CurrentItemView { get; }
[Export ("indexesForVisibleItems")]
NSArray IndexesForVisibleItems { get; }
[Export ("numberOfVisibleItems")]
int NumberOfVisibleItems { get; }
[Export ("visibleItemViews")]
NSArray VisibleItemViews { get; }
[Export ("itemWidth")]
float ItemWidth { get; }
[Export ("contentView")]
UIView ContentView { get; }
[Export ("toggle")]
float Toggle { get; }
[Export ("stopAtItemBoundary")]
bool StopAtItemBoundary { get; set; }
[Export ("scrollToItemBoundary")]
bool ScrollToItemBoundary { get; set; }
[Export ("useDisplayLink")]
bool UseDisplayLink { get; set; }
[Export ("vertical")]
bool Vertical { get; set; }
[Export ("ignorePerpendicularSwipes")]
bool IgnorePerpendicularSwipes { get; set; }
[Export ("centerItemWhenSelected")]
bool CenterItemWhenSelected { get; set; }
[Export ("IBOutletid<iCarouselDataSource>dataSource")]
nonatomic, ah_weak IBOutletid<iCarouselDataSource>dataSource ();
[Export ("scrollByOffset:duration:")]
void ScrollByOffsetduration (float offset, double duration);
[Export ("scrollToOffset:duration:")]
void ScrollToOffsetduration (float offset, double duration);
[Export ("scrollByNumberOfItems:duration:")]
void ScrollByNumberOfItemsduration (int itemCount, double duration);
[Export ("scrollToItemAtIndex:duration:")]
void ScrollToItemAtIndexduration (int index, double duration);
[Export ("scrollToItemAtIndex:animated:")]
void ScrollToItemAtIndexanimated (int index, bool animated);
[Export ("removeItemAtIndex:animated:")]
void RemoveItemAtIndexanimated (int index, bool animated);
[Export ("insertItemAtIndex:animated:")]
void InsertItemAtIndexanimated (int index, bool animated);
[Export ("reloadItemAtIndex:animated:")]
void ReloadItemAtIndexanimated (int index, bool animated);
[Export ("itemViewAtIndex:")]
UIView ItemViewAtIndex (int index);
[Export ("indexOfItemView:")]
int IndexOfItemView (UIView view);
[Export ("indexOfItemViewOrSubview:")]
int IndexOfItemViewOrSubview (UIView view);
[Export ("offsetForItemAtIndex:")]
float OffsetForItemAtIndex (int index);
[Export ("reloadData")]
void ReloadData ();
}
[BaseType (typeof ())]
[Model]
interface iCarouselDataSource {
[Abstract]
[Export ("numberOfItemsInCarousel:")]
uint NumberOfItemsInCarousel (iCarousel carousel);
[Abstract]
[Export ("carousel:viewForItemAtIndex:reusingView:")]
UIView CarouselviewForItemAtIndexreusingView (iCarousel carousel, uint index, UIView view);
[Abstract]
[Export ("numberOfPlaceholdersInCarousel:")]
uint NumberOfPlaceholdersInCarousel (iCarousel carousel);
[Abstract]
[Export ("carousel:placeholderViewAtIndex:reusingView:")]
UIView CarouselplaceholderViewAtIndexreusingView (iCarousel carousel, uint index, UIView view);
[Abstract]
[Export ("numberOfVisibleItemsInCarousel:")]
uint NumberOfVisibleItemsInCarousel (iCarousel carousel);
}
[BaseType (typeof ())]
[Model]
interface iCarouselDelegate {
[Export ("carouselWillBeginScrollingAnimation:")]
void CarouselWillBeginScrollingAnimation (iCarousel carousel);
[Export ("carouselDidEndScrollingAnimation:")]
void CarouselDidEndScrollingAnimation (iCarousel carousel);
[Export ("carouselDidScroll:")]
void CarouselDidScroll (iCarousel carousel);
[Export ("carouselCurrentItemIndexUpdated:")]
void CarouselCurrentItemIndexUpdated (iCarousel carousel);
[Export ("carouselWillBeginDragging:")]
void CarouselWillBeginDragging (iCarousel carousel);
[Export ("carouselDidEndDragging:willDecelerate:")]
void CarouselDidEndDraggingwillDecelerate (iCarousel carousel, bool decelerate);
[Export ("carouselWillBeginDecelerating:")]
void CarouselWillBeginDecelerating (iCarousel carousel);
[Export ("carouselDidEndDecelerating:")]
void CarouselDidEndDecelerating (iCarousel carousel);
[Export ("carousel:itemTransformForOffset:baseTransform:")]
CATransform3D CarouselitemTransformForOffsetbaseTransform (iCarousel carousel, float offset, CATransform3D transform);
[Export ("carousel:valueForOption:withDefault:")]
float CarouselvalueForOptionwithDefault (iCarousel carousel, iCarouselOption option, float value);
[Export ("carousel:shouldSelectItemAtIndex:")]
bool CarouselshouldSelectItemAtIndex (iCarousel carousel, int index);
[Export ("carousel:didSelectItemAtIndex:")]
void CarouseldidSelectItemAtIndex (iCarousel carousel, int index);
[Export ("carouselShouldWrap:__attribute__((deprecated))")]
bool CarouselShouldWrap__attribute__((deprecated)) (iCarousel carousel, (deprecated ));
[Export ("carouselItemWidth:__attribute__((deprecated))")]
float CarouselItemWidth__attribute__((deprecated)) (iCarousel carousel, (deprecated ));
[Export ("carouselOffsetMultiplier:__attribute__((deprecated))")]
float CarouselOffsetMultiplier__attribute__((deprecated)) (iCarousel carousel, (deprecated ));
[Export ("carousel:itemAlphaForOffset:__attribute__((deprecated))")]
float CarouselitemAlphaForOffset__attribute__((deprecated)) (iCarousel carousel, float offset, (deprecated ));
[Export ("carousel:valueForTransformOption:withDefault:__attribute__((deprecated))")]
float CarouselvalueForTransformOptionwithDefault__attribute__((deprecated)) (iCarousel carousel, iCarouselOption option, float value, (deprecated ));
}
如何在我的Xamarin.iOS项目中修复错误并使用iCarousel?这是我与Xamarin的第一个项目,对不起,如果问题很愚蠢。
感谢。
答案 0 :(得分:2)
那些看起来不对:
[Export ("id<iCarouselDelegate>")]
IBOutlet Id<iCarouselDelegate> { get; set; }
[...]
[Export ("IBOutletid<iCarouselDataSource>dataSource")]
nonatomic, ah_weak IBOutletid<iCarouselDataSource>dataSource ();
[...]
[Export ("carouselShouldWrap:__attribute__((deprecated))")]
bool CarouselShouldWrap__attribute__((deprecated)) (iCarousel carousel, (deprecated ));
[Export ("carouselItemWidth:__attribute__((deprecated))")]
float CarouselItemWidth__attribute__((deprecated)) (iCarousel carousel, (deprecated ));
[Export ("carouselOffsetMultiplier:__attribute__((deprecated))")]
float CarouselOffsetMultiplier__attribute__((deprecated)) (iCarousel carousel, (deprecated ));
[Export ("carousel:itemAlphaForOffset:__attribute__((deprecated))")]
float CarouselitemAlphaForOffset__attribute__((deprecated)) (iCarousel carousel, float offset, (deprecated ));
[Export ("carousel:valueForTransformOption:withDefault:__attribute__((deprecated))")]
float CarouselvalueForTransformOptionwithDefault__attribute__((deprecated)) (iCarousel carousel, iCarouselOption option, float value, (deprecated ));
对于已弃用的,删除它们,您将不需要它们。对于其他2个,首先将它们注释掉,然后修复它们。
也有:
[BaseType (typeof ())]
[Model]
interface iCarouselDelegate {
代表通常是[BaseType (typeof (NSObject)]
无论如何,拥有一台发电机可以帮助您入门,但绝不会期望它为您完成所有工作。不要经济不读this并了解Obj-C