gpt4 book ai didi

objective-c - IBOutlet已连接但不工作

转载 作者:行者123 更新时间:2023-12-03 17:54:39 25 4
gpt4 key购买 nike

我有一个带有 IBAction 的类(dicecontroller),这会触发一些 IBOutlet,一切都很高兴。此后我找到了一种更好的方法来组织我的代码并将 IBAction 放入不同的类(playercommand)中。 playercomman 调用 dicecontroller 中的一个方法,该方法具有所有 IBOutlet,但现在没有一个导出显示任何内容。我将 socket 与 xib 重新连接,甚至制作了新 socket ,但似乎没有任何形式的 IBOutlets 可以工作。然而 NSLog 工作得很好,并且我传递给它的数组被很好地接收。

我最近遇到了 Xcode 表现怪异和崩溃的问题,通过重新安装 Xcode 修复了这个问题,我再次这样做,认为这可能是另一个故障,但没有爱。我认为这是 IB 的一些细微差别,我只是不知道

我也真的不知道如何查找这个,几个小时以来一直在尝试寻找一些东西。帮助将是令人鼓舞的。

PlayerCommand.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

骰子 Controller .h

@interface diceController : NSObject

-(void)updatetockNameField: (NSArray*) diceValues;

@end

骰子 Controller .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

最佳答案

问题在这里:

diceController *currentFields = [[diceController alloc] init];

这个diceController实例是一个新实例(您在这一行中创建它)。这与您已在 Nib 中放置和配置的 diceController 实例不同。

如果您的 playerCommand 实例需要对 Nib 中的 diceController 实例的引用,那么您可以在 playerCommand 中创建一个 IBOutlet 并连接它到 Nib 中的 diceController 实例。

顺便说一句,playerCommanddiceController 应分别命名为 PlayerCommandDiceController

关于objective-c - IBOutlet已连接但不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15443907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com