我有一个名为leftMenuView的uiview,在该视图上我有一个按钮,我想向该按钮添加一个动作,以便动作方法应该调用一个视图控制器。看看我做了什么:
这是我的leftMenuView.h
#import <UIKit/UIKit.h>
@class LeftMenuView;
@protocol LeftMenuViewProtocol <NSObject>
-(void)homeClicked;
@end
@interface LeftMenuView : UIView
@property (nonatomic,assign) id<LeftMenuViewProtocol> customDelegate;
-(IBAction)homeClickedAction:(id)sender;
@end
和leftMenuView.m文件
#import "LeftMenuView.h"
@implementation LeftMenuView
-(IBAction)homeClickedAction:(id)sender
{
[self.customDelegate homeClicked];
NSLog(@"Clicked Home");
}
@end
现在我试图通过委托来调用该方法
现在在homeViewController.h
@interface homeViewController : UIViewController<LeftMenuViewProtocol>
现在在我的homeViewController.m中我试图调用该方法,但它没有被调用
-(void)homeClicked
{
NSLog(@"Clicked Home");
}
但是在调用方法的leftViewMenu.m中没有调用上面的方法。希望任何人都能帮助我解决这个问题。
答案 0 :(得分:0)
我认为在 homeViewController 中你有 LeftMenuView 的属性,你需要将 customDelegate 设置为 self 。在 homeViewController viewDidLoad 方法中:
self.leftMenuView.customDelegate = self;
答案 1 :(得分:0)
或者,假设您leftMenuView
中的homeViewController
有参考号,您可以通过编程方式创建UIButton
,并使用homeViewController
设置按钮的目标。例如,在homeViewController
的viewDidLoad中,您可以执行以下操作:
UIButton *myButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 20)]; // set the frame you want
myButton.backgroundColor = [UIColor redColor]; // Do additional set up
[myButton addTarget:self action:@selector(homeClicked) forControlEvents:UIControlEventTouchUpInside]; // here the target of your button's action is your homeViewController
[self.leftMenuView addSubView:myButton]; // Add the button in your left view