0

//RootViewViewController.h

#import <UIKit/UIKit.h>
#import "SettingsViewController.h"
#import "OneSlotViewController.h"
#import "TwoSlotViewController.h"
#import "BingoSlotViewController.h"
#import "SettingsViewController.h"

@interface RootViewViewController : UIViewController{

    IBOutlet UIButton *owaru;
    OneSlotViewController *oneSlotViewController;
    TwoSlotViewController *button2ViewController;
    BingoSlotViewController *button3ViewController;
    UIViewController *pushedController;
    UIButton *hajimekara;
    SettingsViewController *settingsVc;


}
@property (retain, nonatomic) UIButton *hajimekara;
@property (strong, nonatomic) IBOutlet UIButton *owaru;
@property (nonatomic, retain) OneSlotViewController *button1ViewController;
@property (nonatomic, retain) TwoSlotViewController *button2ViewController;
@property (nonatomic, retain) BingoSlotViewController *button3ViewController;
@property (nonatomic, retain) UIViewController *pushedController;
@property (nonatomic, retain) SettingsViewController *settingsVc;

//RootViewViewController.m

@synthesize button1ViewController;
@synthesize button2ViewController;
@synthesize button3ViewController;
@synthesize pushedController;
@synthesize settingsVc;


-(IBAction) startButtonPressed:(id) sender { 
    if (self.settingsVc.pushedController!=nil) { 
        NSLog(@"push"); 
        [self presentViewController:self.settingsVc.pushedController animated:YES completion:NULL]; 
    } 
}

//SettingViewController.h

#import "OneSlotViewController.h"
#import "TwoSlotViewController.h"
#import "BingoSlotViewController.h"

#import "SettingsViewController.h"

#import "AGImagePickerController.h"


@class RootViewViewController;


@interface SettingsViewController : UIViewController<UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIPopoverControllerDelegate,UIScrollViewDelegate>{


    OneSlotViewController *oneSlotViewController;
    TwoSlotViewController *button2ViewController;
    BingoSlotViewController *button3ViewController;
    UIViewController *pushedController;
     RootViewViewController *mainVc;
    UIImageView *lastPriceView;
    CustomImagePicker *_imagePicker;
    UINavigationController *navController;

}


@property (nonatomic, retain) UIPopoverController *popoverController;
@property (nonatomic, retain) OneSlotViewController *button1ViewController;
@property (nonatomic, retain) TwoSlotViewController *button2ViewController;
@property (nonatomic, retain) BingoSlotViewController *button3ViewController;
@property (nonatomic, retain) UIViewController *pushedController;
@property (nonatomic, retain) RootViewViewController *mainVc;
@property (strong, nonatomic) IBOutlet UIImageView *lastPriceView;
@property (nonatomic, retain) CustomImagePicker *imagePicker;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;

//SettingViewController.m

-(IBAction) button1Pressed:(id)sender {
    if (self.button1ViewController==nil) {
        button1ViewController = [[OneSlotViewController alloc] init];
    }
    self.pushedController = button1ViewController;
}

-(IBAction) button2Pressed:(id)sender {
    if (self.button2ViewController==nil) {
        button2ViewController = [[TwoSlotViewController alloc] init];
    }
    self.pushedController = button2ViewController;
}

-(IBAction) button3Pressed:(id)sender {
    if (self.button3ViewController==nil) {
        button3ViewController = [[BingoSlotViewController alloc] init];
    }
    self.pushedController = button3ViewController;
}

2 つのコントローラーのインスタンスを既に宣言しています。ボタンが SettingsViewController で押されるたびに、ViewController が MainViewController の startButton に渡されます。しかし、私はそれを機能させることができないようです。ご協力いただきありがとうございます。

4

1 に答える 1

1

SettingsViewController.pushedController と MainViewController.pushedController は別の変数です。一方を変更しても他方には影響しません。

2 つのオプションがあります。SettingsViewController を MainViewController に格納するか、MainViewController を SettingsViewController に渡す必要があります。

MainViewController が SettingsViewController への参照を保持している場合、次のことができます。

-(IBAction) startButtonPressed:(id) sender { 
    if (self.settingsViewController.pushedController!=nil) { 
        NSLog(@"push"); 
        [self presentViewController:self.settingsViewController.pushedController animated:YES completion:NULL]; 
    } 
}

SettingsViewController に MainViewController への参照が渡された場合、次のことができます。

-(IBAction) button1Pressed:(id)sender {
    if (self.button1ViewController==nil) {
        button1ViewController = [[ViewOneController alloc] init];
    }
    self.mainViewController.pushedController = button1ViewController;
}

-(IBAction) button2Pressed:(id)sender {
    if (self.button2ViewController==nil) {
        button2ViewController = [[ViewTwoController alloc] init];
    }
    self.mainViewController.pushedController = button2ViewController;
}

-(IBAction) button3Pressed:(id)sender {
    if (self.button3ViewController==nil) {
        button3ViewController = [[ViewThreeController alloc] init];
    }
    self.mainViewController.pushedController = button3ViewController;
}

これらのいずれかを選択すれば、問題ありません。

于 2012-06-01T03:51:11.510 に答える