所以我正在使用两个窗口处理这个OSX应用程序。一个窗口具有带有自定义视图控制器的NS视图。我有全局变量,其中包含窗口控制器需要告诉视图控制器的重要信息。不幸的是,我无法改变这些全局变量。你看我有几个NSPopUpButtons,用户从中选择了几个项目。我检索这些弹出框的索引,并将这些值分配给全局变量。或者至少我想,但全局变量不会改变,我无法从NSView控制器读取这些更改。将这些变量传递给另一个类的最佳方法是什么?
窗口控制器.m:
#import "MenuController.h"
int gameOn = 0; //global variable
int gameMode = 0; //global variable
int player1Type; //global variable
int player2Type; //global variable
...分配给全局的选定项目
-(IBAction) vsGameOpener: (id) sender
{
player1Type = [player1Select indexOfSelectedItem];
player2Type = [player2Select indexOfSelectedItem];
gameMode = 1;
[self unhideWindows];
}
窗口控制器.h:
#import <Cocoa/Cocoa.h>
#import "gameView.h"
extern int gameOn; //variable managing if the game is running or not
extern int gameMode; //variable managing what game mode it is: 0:menu, 1: VS, 2: practice
extern int player1Type; //variable for storing selected player 1 character
extern int player2Type; //variable for storing selected player 2 character
最后是视图控制器(gameView.m):
#import "gameView.h"
#import "MenuController.h"
extern int gameMode; //global variable
extern int gameOn; //global variable
extern int player1Type; //global variable
extern int player2Type; //global variable
答案 0 :(得分:0)
好的,事实证明全局变量正常。我遇到的问题是nsview的初始化程序在全局值更改之前运行,这意味着当包含它的窗口显示时,我现在必须重新初始化nsview。 (它开始隐藏)