У меня был класс (dicecontroller) с IBAction, и это вызовет некоторые IBOutlets, все были счастливы. С тех пор я нашел лучший способ организовать мой код и поместить IBAction в другой класс (команда игрока). playercomman называет метод в dicecontroller, который имеет все IBOutlets, за исключением того, что ни один из выходов ничего не отображает. Я снова подключил выходы к xib, даже сделал новые выходы, ни одна форма IBOutlets, похоже, не работает. Однако NSLog работает очень хорошо, и массив, с которым я его передаю, получает штраф.IBOutlet подключен, но не работает
У меня возникли проблемы с тем, что Xcode действовал странно и рушится недавно, что было исправлено путем переустановки Xcode, я сделал это снова, думая, что это может быть еще один сбой, но нет любви. Я думаю, что это какой-то нюанс IB, который я просто не знаю о
Я также не знаю, как это выглядеть, пытался что-то найти в течение нескольких часов. Помощь будет обнадеживающей.
PlayerCommand.h
#import "DiceRoll.h"
#import "diceController.h"
@interface playerCommand : NSObject
- (IBAction)roll:(NSButton *)sender;
@end
Playercommand.m
#import "playerCommand.h"
@implementation playerCommand
- (IBAction)roll:(NSButton *)sender {
DiceRoll *currentTurn = [[DiceRoll alloc] init];
[currentTurn rolldice];
diceController *currentFields = [[diceController alloc] init];
[currentFields updatetockNameField:[currentTurn diceValuesArray]];
}
@end
dicecontroller.h
@interface diceController : NSObject
-(void)updatetockNameField: (NSArray*) diceValues;
@end
dicecontroller.m
#import "diceController.h"
// declaring private properties
@interface diceController()
@property (weak) IBOutlet NSTextField *ActionField;
@property (weak) IBOutlet NSTextField *QuantityField;
@end
@implementation diceController
-(void)updatetockNameField:(NSArray *) diceValues {
switch ([[diceValues objectAtIndex:2] integerValue]) {
case 0 ... 1:
[[self ActionField] setStringValue:@"Up"];
break;
case 2 ... 3:
[[self ActionField] setStringValue:@"Down"];
break;
case 4 ... 5:
[[self ActionField] setStringValue:@"Div"];
break;
default:
[[self ActionField] setStringValue:@"Err"];
break;
}
switch ([[diceValues objectAtIndex:2] integerValue]) {
case 0 ... 1:
[[self QuantityField] setIntegerValue:5];
break;
case 2 ... 3:
[[self QuantityField] setIntegerValue:10];
break;
case 4 ... 5:
[[self QuantityField] setIntegerValue:20];
break;
default:
[[self QuantityField] setStringValue:@"E"];
break;
}
} //end of updatetockNameField method
@end
Pls отправляет некоторый код, в частности пример вызовов в том, что этот класс вызывает тот, у кого есть IBOutlets. Также дайте имена классу «тот» и «этот» класс и т. Д., Чтобы люди могли ссылаться на эти имена в своих ответах на вас. –