objective-c - 从 NSTextField 类别内访问 View ?

标签 objective-c cocoa categories nstextfield

我的代码中有几个不同的类使用相同的方法 - 导致大量重复的行 - 而且我最近发现添加类别可以有效解决问题。举一个较小的例子,我以前的方法(通常)以传统方式调用,如下所示:

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/

相关文章:

cocoa - 如何检测 NSOutlineView 的滚动?

c++ - 在 Objective C++ 中加载 Nib 和显示窗口

iphone - 如何使用代码在 ios 应用程序中录制屏幕视频?

ios - 将包含 Latex Command for Mathematical 公式的 HTML 文本转换为输出正确公式的纯文本或属性文本

ios - UItextview 与 UIWebView 在 iOS 中显示长属性文本

cocoa - NSScrollview 可能无法响应 '-text'

wordpress - 如何在wordpress中显示所有类别?

PHP MySQL 项目类别

php - 计算属于MYSQL中某个上层树的多级类别树中的项目

iOS + 如何捕获未处理的异常