2015-01-27 3 views
0

У меня есть несколько NSTextFields в моем XIB. Я создал действие для одного из моих текстовых полей, и это выглядит какИспользуйте текстовое поле для установки значения переменной

- (IBAction)setXPos:(id)sender; 

В моем файле AppDelegate.h я также создал int именем XPos. В моем файле AppDelegate.m у меня возникла проблема с установкой значения XPos в том, что я ввожу в текстовое поле. Любая помощь здесь? Должен ли я сделать

@property 

в моем приложении AppDelegate.h? Мой текущий код выглядит следующим образом:

XPos = sender; 

Но это ошибки.

+0

Во-первых, вы обычно не устанавливать переменные в AppDelegate, за то, что он выглядит вы могли бы хотеть установить их в ViewController .. – NorthBlast

+0

найти некоторые учебники ... – chris

+0

@NorthBlast Я не имею ViewController. все, что у меня есть, - это делегат приложения. Это приложение mac btw – XtremeHek3r

ответ

1

Это довольно просто. В вашем файле .h:

@interface AppDelegate : NSObject <NSApplicationDelegate> 

{ 
    IBOutlet NSTextField *xPosTextBox; 
} 

- (IBAction)setXPos:(id)sender; 

Убедитесь, что вы подключаетесь как к вашему NSTextField в IB. На следующем шаге я предполагаю, что в текстовом поле есть число форматера и что xPos является двойным. В applicationDidFinishLaunching:

[[xPosTextBox formatter] setFormat:@"##0.000"]; 
[xPosTextBox setDoubleValue:myInitialValue]; 

Тогда где-то в коде AppDelegate добавить метод:

- (IBAction)setXPos:(id)sender 
{ 
    xPos = [xPosTextBox doubleValue]; 
} 

легко.

, если у вас есть поплавок в applicationDidFinishLaunching:

[[xPosTextBox formatter] setFormat:@"##0.000"]; 
[xPosTextBox setFloatValue:myInitialValue]; 

Тогда метод IBAction:

- (IBAction)setXPos:(id)sender 
{ 
    xPos = [xPosTextBox floatValue]; 
} 

Если у вас есть Int (или NSInteger), нет необходимости для числа форматировщиком, поэтому в applicationDidFinishLaunching:

[xPosTextBox setIntValue:myInitialValue]; 
// [xPosTextBox setIntegerValue:myInitialValue]; for NSInteger 

Тогда метод IBAction:

- (IBAction)setXPos:(id)sender 
{ 
    xPos = [xPosTextBox intValue]; 
    // xPos = [xPosTextBox integerValue]; for NSInteger 
} 
+0

Возможно ли это сделать с помощью float или int? – XtremeHek3r

+0

Ты лучший! Apple делает контроль + перетаскивание своего рода запутанным для начинающего программиста, подобного мне. – XtremeHek3r

+0

Кроме того, он продолжает проверять значение или проверяет его только один раз (в 'applicationDidFinishLaunching:' – XtremeHek3r

Смежные вопросы