Ios 在一个视图控制器中创建UIButton的iAction,并影响另一个视图控制器中的操作
我计划创建两个UIViewController。基本上,在两个视图控制器之一中有一些按钮。当我按下其中一个按钮时,我想在另一个视图控制器中触发一些操作。有什么方法可以让它成为可能吗?有三种方法可以做到这一点 使用Ios 在一个视图控制器中创建UIButton的iAction,并影响另一个视图控制器中的操作,ios,objective-c,uiviewcontroller,uibutton,ibaction,Ios,Objective C,Uiviewcontroller,Uibutton,Ibaction,我计划创建两个UIViewController。基本上,在两个视图控制器之一中有一些按钮。当我按下其中一个按钮时,我想在另一个视图控制器中触发一些操作。有什么方法可以让它成为可能吗?有三种方法可以做到这一点 使用NSNotificationCenter,使用委托,最后一个是使用块,第一个选项很容易学习 将观察者添加到FirstViewController中 在SecondViewController中发布通知(当用户单击按钮时) 参考如下 希望这有帮助是的,您可以使用一个代理 例如,您可能有此视
NSNotificationCenter
,使用委托
,最后一个是使用块
,第一个选项很容易学习
希望这有帮助是的,您可以使用一个代理 例如,您可能有此视图控制器
//FirstViewController.h
@protocol ProtocolName <NSObject>
- (void)doSomething;
@end
@interface FirstViewController
@property (nonatomic, strong) id<ProtocolName> delegate;
@property (weak, nonatomic) IBOutlet UIButton *button;
- (IBAction)action:(id)sender;
@end
魔法来了
假设当您点击FirstViewController中的按钮时,它会触发SecondViewController中的doSomething方法。所以,你需要这样做
//FirstViewController.m
//...
SecondViewController secondVC = [[SecondViewController alloc] init];
this.delegate = secondVC; //DON'T FORGET THIS
//...
- (IBAction)action:(id)sender{
[this.delegate doSomething];
}
这是委托模式。使用委托方法。在addTarget方法中,放置另一个viewcontroller。
//SecondViewController.m
- (void)doSomething{
//Do something
}
//FirstViewController.m
//...
SecondViewController secondVC = [[SecondViewController alloc] init];
this.delegate = secondVC; //DON'T FORGET THIS
//...
- (IBAction)action:(id)sender{
[this.delegate doSomething];
}