我的代码中有几个不同的类使用相同的方法 - 导致大量重复的行 - 而且我最近发现添加类别可以有效解决问题。举一个较小的例子,我以前的方法(通常)以传统方式调用,如下所示:
if((thisNum=[self valueInTextField:ctr]) != 0)
//... do stuff here...
- (int)valueInTextField:(int)tagNum
{
NSTextField *field = [[prizeWindow contentView] viewWithTag:tagNum];
int value = [field intValue];
return value;
}
我删除了上面的方法并添加了类别:
@implementation NSTextField(GetFieldValue)
- (int)valueInTextField
{
NSTextField *field = [[[self window] contentView] viewWithTag:tagNum]; // DOESN'T LIKE THIS!!
return [self intValue];
}
@end
但是,它不喜欢我要求它使用 [[self window] contentView] 查找 textField 本身,因此我可以让它工作的唯一方法是(显然)删除有问题的行并传递一些内容喜欢:
if([[[[self window]contentView]viewWithTag:ctr] valueInTextField] != 0)
我确信您可以在这里看到我想要实现的目标。有什么方法可以让我获得一个类别来识别上面暗示的必填字段——即无需亲自通过它?预先感谢:-)
最佳答案
如果您发现自己的许多窗口或窗口 Controller 都需要该方法,那么放置类别的正确位置将是这些类之一。例如:
@implementation NSWindow(GetFieldValue)
- (int)valueInTextFieldWithTag:(int)tag
{
NSTextField *field = [[self contentView] viewWithTag:tag];
return [field intValue];
}
@end
关于objective-c - 从 NSTextField 类别内访问 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2395571/