私はこのような3つのボタンを持っていますそれぞれが異なるに対応していますUIViewController
:
たとえば、ボタン1を押します。スタートボタンに、表示される番号に対応するビューコントローラが渡されます。
このボタンでそれを渡すことができる必要があります:
出来ますか?
はい、ボタンタップで表示されるViewControllerのプロパティとしてUIButtonを作成するだけです。次に、ボタンタップのハンドラーで、新しいコントローラーのbuttonプロパティを使用して、新しいコントローラーを表示する前にボタンを割り当てます。
サンプルコード:
//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について話しましょう(他のボタンやVCに一般化できます)。関連するviewControllerがbutton1ViewControllerと呼ばれているとします。
button1ViewControllerで、buttonというプロパティを宣言します(@property(strong、non atom)UIButton * button-合成も行います)。
IBActionメソッドで。
-(IBAction) button1Tapped:(id)sender {
button1ViewController.button = sender;
[self presentViewController:button1ViewController;
}
編集:私は今質問を受けると思います。
mainViewコントローラーで、インスタンス変数UIViewController*pushedControllerを宣言します。また、インスタンスを宣言します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];
}
これはうまくいくはずだと思いますが、私は自分でコードを試していません。