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

How to pass a button action from a uiview to another view controller

我有一个名为 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 调用该方法的地方并没有调用上述方法。希望有人能帮助我解决这个问题。

我想在 homeViewController 中你有一个 属性 用于 LeftMenuView 你需要设置 customDelegateself。在 homeViewController viewDidLoad 方法中:

self.leftMenuView.customDelegate = self;

或者,假设您在 homeViewController 中有对 leftMenuView 的引用,您可以通过编程方式创建 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