用Objective-C编写的我的OS X应用程序需要显示变化NSString*
变量theString
,这可能会变得非常大。
我使用Xcode IB构建一个nib文件,在AppDelegate.h中声明的theString
对象NSTextField*
中显示panel
,如下所示:
@property (weak) IBOutlet NSTextField *panel;
现在我可以像这样在AppDelegate.m中设置panel
的内容:
self.panel.stringValue = theString;
一切正常。但我现在想给我的文本字段一个滚动条。因此,取代"文本字段"我选择了一个"文本视图"从对象库中获取蓝线以生成panel
的新声明,现在看起来像这样:
@property (weak) IBOutlet NSScrollView *panel;
现在不再有效了:
self.panel.stringValue = theString;
引发错误:(!) Property 'stringValue' not found on object of type 'NSScrollView*'
我如何修复此声明?
(可能我只是说我找到关于这个主题的广泛的Apple文档拜占庭和不透明。为什么我天真地期待这个简单问题的简单回答,因为它似乎暗示了什么?我必须遗漏一些明显的东西 - - 它是什么?)
答案 0 :(得分:0)
你得到的是一个封装在NSScrollView中的NSTextView。 scrollView是制作所需滚动条的东西。它基本上在视口内部拥有一个可能更大的视图,并且只显示其中的一小部分,您可以使用滚动条移动它。您需要从代码中获取(另一个)引用到scrollView中的NSTextView。您可以在IB中的层次结构中找到NSTextView并附加到该层。
这是你想要的方向,但我认为不是你需要的。 textView是一个比简单的textField更高级的控件,可能比你需要的更多。您可以使用包含在内部的默认NSView附带的NSScrollView来使用自定义视图。然后,而不是NSTextView将您的NSTextField放在NSView上。这个问题是你需要添加一些代码来根据textField的内容自动调整NSTextField和NSView的大小。一旦你对它进行了排序,scrollView将自动安排你需要的滚动条。