自定义代表

时间:2011-04-15 11:01:16

标签: objective-c ios cocoa-touch

我想知道如何使用自定义委托?

1 个答案:

答案 0 :(得分:2)

也许一个例子可以帮助你:

#import <UIKit/UIKit.h>
@protocol VSKeypadViewDelegate
@required
-(int)numberOfRows;
-(int)numberOfColumns;

-(NSString*)titleForButtonOnRow:(int)row andColumn:(int)column;
-(id)valueForButtonOnRow:(int)row andColumn:(int)column;
-(CGSize)sizeForButtonOnRow:(int)row andColumn:(int)column;
-(void)receivedValue:(id)value;
-(CGPoint)keypadOrigin;

@optional
-(NSArray *)additionalButtonsForKeypad;
//-(UIColor *)keypadBackgroundColor;
//-(UIColor *)keyBackgroundColorForRow:(int)row andColumn:(int)Column;
-(UIImage *)backgroundImageForState:(UIControlState)state forKeyAtRow:(int)row andColumn:(int)column;
-(BOOL)isButtonEnabledAtRow:(int)row andColumn:(int)column;

@end


@interface VSKeypadView : UIView {
    id<VSKeypadViewDelegate> delegate;
    NSArray *keypadButtons;
}

+ (VSKeypadView *)keypadViewWithFrame:(CGRect)r;

- (id)initWithFrame:(CGRect)r ;
-(void)fireKeypadButton:(id)sender;

@property(nonatomic, assign) id<VSKeypadViewDelegate> delegate;

@end

这是我写的键盘 VSKeyPadView派生自UIView并具有类型为id<VSKeypadViewDelegate>的委托ivar,这意味着,设置为delegate的对象应符合协议VSKeypadViewDelegate。该协议有一些必要的和一些可选的方法。这意味着,你有责任编写这些方法 - 对你来说是有意义的。

您会在github的示例应用程序中找到此代码。