Ios 从其他视图控制器调用按钮
当单击第一视图控制器中的按钮时,如何调用第二视图控制器中的按钮(假事件) 通过执行以下操作,我可以为同一视图控制器中的按钮伪造事件:Ios 从其他视图控制器调用按钮,ios,uibutton,Ios,Uibutton,当单击第一视图控制器中的按钮时,如何调用第二视图控制器中的按钮(假事件) 通过执行以下操作,我可以为同一视图控制器中的按钮伪造事件: - (IBAction)first:(id)sender { NSLog(@"this is second"); } - (IBAction)second:(id)sender { [self.first sendActionsForControlEvents:UIControlEventTouchUpInside]; // works }
- (IBAction)first:(id)sender {
NSLog(@"this is second");
}
- (IBAction)second:(id)sender {
[self.first sendActionsForControlEvents:UIControlEventTouchUpInside]; // works
}
但如果按钮位于不同的视图控制器中,我无法伪造它:
- (IBAction)first:(id)sender {
SecondViewController *SecondView = [[ViewController alloc] init];
[SecondView.button sendActionsForControlEvents: UIControlEventTouchUpInside]; // doesnt work
}
假设你的第二个VC属于第一个VC,那么 a) 将类似这样的属性添加到
FirstViewController
的类扩展中,例如:
#import "SecondViewController.h"
@interface FirstViewController()
// Be aware of retain cycles.
@property (nonatomic, retain) SecondViewController *secondVC;
@end
b) 创建SecondViewController时,将其存储在我们刚刚创建的属性中:
// Change this if you're not using a Storyboard.
self.secondVC = [[UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:nil]
instantiateViewControllerWithIdentifier:@"SecondViewController"];
c) 将方法添加到您的SecondViewController
:
- (void)clickMyButton:(id)sender {
[self.myButton sendActionsForControlEvents:UIControlEventTouchUpInside];
}
[self.secondVC clickMyButton:self];
d) 从您的FirstViewController
执行此操作:
- (void)clickMyButton:(id)sender {
[self.myButton sendActionsForControlEvents:UIControlEventTouchUpInside];
}
[self.secondVC clickMyButton:self];
如果我的第一个假设不正确,您仍然可以执行步骤A、B和D。步骤B有点变化:您必须使用在其他地方创建的现有实例设置
self.secondVC
。1st view controller具有搜索栏,单击搜索栏将获得弹出框(2nd view controller)和键盘(搜索栏键盘),popover具有搜索按钮,该按钮将用于第三视图控制器(按下)。现在,单击键盘上的搜索键,第二视图搜索按钮必须调用。如果我理解正确,则当您按下键盘上的“搜索”键时,您希望执行与搜索按钮关联的操作。对吗?如果是,您只需实现-(void)searchBarSearchButtonClicked:(UISearchBar*)searchBar在弹出框中编码>,并设置self.searchBar.delegate=self
,使UISearchBar
在按下搜索键时通知控制器。但搜索键属于第一视图控制器,搜索按钮属于第二视图控制器,要执行所单击的SearchBarSearchButton
执行[self.secondVC单击MyButton:self]
在1st
控制器上,相应地设置UISearchBar
委托,然后执行我在答案中写下的步骤。我将任务分为:1)尝试让第一个控制器知道按键的情况;2) 尝试让第一个控制器点击第二个控制器上的按钮;3) 把它们放在一起;4) 测试一切;5) 咖啡时间;