如何将按钮操作从 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 你需要设置 customDelegate 到 self。在 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
我有一个名为 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 你需要设置 customDelegate 到 self。在 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