【问题标题】:call method in a subclass of UIViewUIView 子类中的调用方法
【发布时间】:2010-03-24 10:39:04
【问题描述】:

我有一个 UIViewController 和一个自己的类,它是 UIView 的子类。

在我的 ViewController 中,我创建了一个 uiview 的实例。 如果我点击 uiview,则会在其中调用一个函数并出现一个覆盖。 要在以后摆脱该覆盖,用户必须点击屏幕上的某个位置(除了我的类的实例)

我如何告诉我的班级关闭覆盖?我已经想到了委托。

所以我的想法是制作一个 MyUIViewControllerdelegate。如果我的视图控制器收到点击,则应调用委托。唯一的问题是我如何告诉我的子类它应该接收该委托?我的子类中没有我的视图控制器实例,所以我无法设置委托。

有什么想法吗?希望我的问题很清楚:)

非常感谢

【问题讨论】:

    标签: iphone class uiview delegates subclass


    【解决方案1】:

    唯一的问题是我如何告诉我的 它应该接收的子类 代表?我没有我的实例 我的子类中的视图控制器,所以我可以 没有设置委托。

    MyUIView.h:

    @protocol MyUIViewDelegate;
    
    @interface MyUIView : UIView
    {
        ...
        id<MyUIViewDelegate> delegate;
        ...
    }
    
    ...
    @property (nonatomic, assign) id<MyUIViewDelegate> delegate;
    ...
    
    @end
    
    @protocol MyUIViewDelegate <NSObject>
    - (void)myUIViewDidFinish:(MyUIView*)myUIView;
    @end
    

    MyUIView.m:

    ...
    @synthesize delegate;
    ...
    
    - (void)dismiss
    {
        [delegate myUIViewDidFinish:self];
    }
    

    MyUIViewController.h:

    #import "MyUIView.h"
    
    @interface MyUIViewController : UIViewController <MyUIViewDelegate>
    {
        ...
        MyUIView* myOverlay;
        ...
    }
    
    ...
    @property (nonatomic, retain) IBOutlet MyUIView* myOverlay;
    ...
    
    @end
    

    MyUIViewController.m:

    ...
    @synthesize myOverlay;
    ...
    
    - (void)dealloc
    {
        ...
        [myOverlay release];
        ...
    
        [super dealloc];
    }
    
    ...
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        ...
        myOverlay.delegate = self;
        ...
    }
    
    ...
    
    - (void)showMyUIView
    {
        // ... show myOverlay ...
    }
    
    ...
    
    #pragma mark MyUIViewDelegate Methods
    
    - (void)myUIViewDidFinish:(MyUIView*)myUIView
    {
        // ... hide myOverlay ...
    }
    

    【讨论】:

    • 首先:感谢您的工作:)!到目前为止,我了解您的工作。但是,如果我创建多个 MyUIView 实例会怎样?我想在数组中计算尽可能多的项目。所以我不能在@interface 中设置所有这些?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    相关资源
    最近更新 更多