我有三个这样的按钮,每个按钮对应一个不同的UIViewController
:
例如,我按下按钮1.它将传递给开始按钮,视图控制器对应于它将显示的那个数字。
我需要能够在此按钮中传递它:
有可能吗?
答案 0 :(得分:1)
是的,只需在按钮点击上显示的视图控制器上创建UIButton属性即可。然后,在按钮点击的处理程序中,使用新控制器上的按钮属性在显示新控制器之前指定按钮。
示例代码:
//here's your method invoked when pressing the button 1
- (IBAction) pressedButtonOne:(id) sender {
NewViewController *newVc = [[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];
newVc.startButton = self.startButton;
}
这是按下按钮1时创建的控制器中的代码
NewViewController.h
#import <UIKit/UIKit.h>
@interface NewViewController : UIViewController
@property (nonatomic, retain) UIButton *startButton;
//NewViewController.m
- (void) viewDidLoad {
//use self.startButton here, for whatever you need
}
答案 1 :(得分:1)
如果我正确理解了这个问题:让我们来谈谈第一个按钮(你可以把它推广到其他按钮和VC)。假设关联的viewController被称为button1ViewController。
在你的button1ViewController中,声明一个名为button的属性(@property(强,非原子)UIButton *按钮 - 也合成)..
在您的IBAction方法中。
-(IBAction) button1Tapped:(id)sender {
button1ViewController.button = sender;
[self presentViewController:button1ViewController;
}
修改 :我想我现在就得到了这个问题。
在mainView控制器中声明一个实例变量:UIViewController * pushingController。 还声明实例Button1ViewController * button1ViewController; ,Button2ViewController * button2ViewController,Button3ViewController * button3ViewController。
现在:
-(IBAction) button1Pressed:(id)sender {
if (button1ViewController==nil) {
button1ViewController = [Button1ViewController alloc] init];
}
pushedController = button1ViewController;
}
-(IBAction) button2Pressed:(id)sender {
if (button2ViewController==nil) {
button2ViewController = [Button2ViewController alloc] init];
}
pushedController = button2ViewController;
}
//same thing for button 3 pressed with button 3 controller
-(IBAction) startButtonPressed:(id) sender {
if (pushedViewController!=nil)
[self presentViewController:pushedViewController animated:YES completion:NULL];
}
我认为这应该有效,但我自己没有尝试过代码。