我有一个带有 IBAction 的类(dicecontroller),它会触发一些 IBOutlets,一切都很开心。从那以后,我找到了一种更好的方法来组织我的代码并将 IBAction 放在不同的类(playercommand)中。playercomman 调用 dicecontroller 中的一个方法,该方法具有所有 IBOutlets,但现在没有一个 outlet 显示任何内容。我用 xib 重新连接了网点,甚至制作了新的网点,但似乎没有任何形式的 IBOutlets 可以工作。但是 NSLog 工作得很好,我传递的数组也被很好地接收了。
我最近遇到了 Xcode 表现怪异和崩溃的问题,这通过重新安装 Xcode 得到了修复,我再次这样做,认为这可能是另一个故障,但没有爱。我在想这是我不知道的 IB 的一些细微差别
我也真的不知道如何查找这个,一直试图找到几个小时的东西。帮助将是令人鼓舞的。
玩家命令.h
#import "DiceRoll.h"
#import "diceController.h"
@interface playerCommand : NSObject
- (IBAction)roll:(NSButton *)sender;
@end
玩家命令.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
骰子控制器.h
@interface diceController : NSObject
-(void)updatetockNameField: (NSArray*) diceValues;
@end
骰子控制器.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