0

SBSettingsViewController で NSString 変数を作成したばかりで、それを SBViewController で取得したいと考えています。

私は知っています..これについてはたくさんの反応がありますが、私は何が間違っているのか本当にわかりません。これを使用して(null)値を取得しています。

ありがとう!

SBViewController.h:

#import <UIKit/UIKit.h>

@interface SBViewController : UIViewController {
    NSString *gameMode;
}

@property (retain, nonatomic) NSString *gameMode;

- (IBAction)geraManobra;

SBViewController.m

#import "AppDelegate.h"
#import "SBViewController.h"
#import "SBSettingsViewController.h"

@interface SBViewController ()

@end

@implementation SBViewController

@synthesize gameMode;

- (IBAction)geraManobra {
    NSLog(@" %@",gameMode);
}

SBSettingsViewController.h

#import <UIKit/UIKit.h>
#import <FacebookSDK/FacebookSDK.h>

@interface SBSettingsViewController : UITableViewController

- (IBAction)selectModeFlat;

SBSettingsViewController.m

#import "AppDelegate.h"
#import "SBSettingsViewController.h"
#import "SBViewController.h"

@interface SBSettingsViewController ()

@end

@implementation SBSettingsViewController

- (IBAction)selectModeFlat {
    SBViewController *sbView = [[SBViewController alloc] init];
    sbView.gameMode = @"Flat Ground";
    NSLog(@" %@",sbView.gameMode);
}
4

4 に答える 4

0
- (IBAction)selectModeFlat {
    SBViewController *sbView = [[SBViewController alloc] init];
    sbView.gameMode = @"Flat Ground";
    NSLog(@" %@",sbView.gameMode);
}

SBViewControllerを新しく作成し、SBViewControllerをSBSettingsViewControllerの前に実行し、「sbView」を作成した後にアクションを呼び出します。

- (IBAction)selectModeFlat {
    SBViewController *sbView = [[SBViewController alloc] init];
    sbView.gameMode = @"Flat Ground";
   [self sbView.geraManobra];
}

「geraManobra」アクションを思い出します

于 2012-10-30T04:37:52.550 に答える
0

次の方法は(時間を無駄にする以外に)効果がありません。

- (IBAction)selectModeFlat {
    SBViewController *sbView = [[SBViewController alloc] init];
    sbView.gameMode = @"Flat Ground";
    NSLog(@" %@",sbView.gameMode);
}

これはsbViewローカル変数であるためです。スコープはメソッドの最後までです。ARCは、終了時に、作成されたSBViewControllerを削除し}ます。

于 2012-10-30T03:01:11.230 に答える
0

最も簡単な方法は、プロパティを作成することだと思います

@property (assign, nonatomic) SBViewController *sbViewController;

SBSettingsViewController、TabBarController 内のどこかに既存の SBViewController オブジェクトで初期化すると、次のようなselectModeFlatプロパティを設定できるようになります。gameMode

self.sbViewController.gameMode = @"Something"
于 2012-10-29T22:39:16.853 に答える
0

私の知る限り、SBSettingsViewController は SBViewController の前に作成できるため、プロパティをアプリケーション デリゲートに移動して、そのような方法でアクセスすることをお勧めします。

MyApplicationDelegate *appDelegate = (MyApplicationDelegate *)[[UIApplication sharedApplication] delegate]; 
appDelegate.gameMode = @"Something";

とにかく、それを機能させるには、より信頼性の高いものが必要になると思います。コントローラーからゲーム設定にアクセスできるオブジェクトのようなものです。しかし、最初の試行には app delegate プロパティで十分だと思います。

于 2012-10-30T11:35:18.617 に答える