如何将按钮操作从uiview传递到另一个视图控制器

时间:2015-01-09 11:36:11

标签: ios objective-c uiview

我有一个名为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中没有调用上面的方法。希望任何人都能帮助我解决这个问题。

2 个答案:

答案 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