相关疑难解决方法(0)

尝试实现委托继承

我有一个名为ToolbarView的类,它是UIView的子类,基本上创建了一个UIView,它顶部有一个消失/重新出现的UIToolbar.我还有一个名为DraggableToolbarView的ToolbarView子类,使用户可以在屏幕上拖动视图.

我需要为ToolbarView创建一个委托,以便它可以在工具栏重新出现和消失时通知另一个对象/类.我还需要创建一个委托,DraggableToolbarView以便在拖动视图时通知另一个对象/类.DraggableToolbarViews委托还需要在工具栏重新出现和消失时通知另一个对象/类.

所以我决定实现ToolbarViewDelegate,让DraggableToolbarViewDelegate继承它并拥有自己的方法,如下所示:

ToolbarView.h

#import <UIKit/UIKit.h>

@protocol ToolbarViewDelegate;

@interface ToolbarView : UIView <UIGestureRecognizerDelegate>
{
    id <ToolbarViewDelegate> _toolbarViewDelegate;
}

@property(nonatomic, assign) id <ToolbarViewDelegate> toolbarViewDelegate;

@end
Run Code Online (Sandbox Code Playgroud)

ToolbarView.m

#import "ToolbarView.h"
#import "ToolbarViewDelegate.h"

...

- (void) showBars
{      
       ...
        if (self.toolbarViewDelegate)
        {
            [self.toolbarViewDelegate toolbarViewWillShowToolbar:self];
        }

       ...
}

- (void) hideBars
{
       ...
        if (self.toolbarViewDelegate)
        {
            [self.toolbarViewDelegate toolbarViewWillHideToolbar:self];
        }

        ...
}
Run Code Online (Sandbox Code Playgroud)

ToolbarViewDelegate.h

@class ToolbarView;

@protocol ToolbarViewDelegate

@required

- (void) toolBarViewWillShowToolbar:(ToolbarView *)toolbarView;
- (void) toolBarViewWillHideToolbar:(ToolbarView *)toolbarView;

@end
Run Code Online (Sandbox Code Playgroud)

DraggableToolbarView.h

#import"ToolbarView.h"

@protocol DraggableToolbarViewDelegate;

@interface DraggableToolbarView : …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch delegates design-patterns ios

5
推荐指数
1
解决办法
2335
查看次数

标签 统计

cocoa-touch ×1

delegates ×1

design-patterns ×1

ios ×1

iphone ×1