在Objective C

时间:2017-01-30 00:26:10

标签: objective-c xcode macos

所以我正在使用两个窗口处理这个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

1 个答案:

答案 0 :(得分:0)

好的,事实证明全局变量正常。我遇到的问题是nsview的初始化程序在全局值更改之前运行,这意味着当包含它的窗口显示时,我现在必须重新初始化nsview。 (它开始隐藏)