【问题标题】:Is there something similar to getViewById() in cocoa?可可中有类似于 getViewById() 的东西吗?
【发布时间】:2011-07-18 04:55:56
【问题描述】:

我是cocoa 的新手,似乎为了获得对view/button/label/text etc.. 的引用,您必须使用界面生成器创建一个出口。但是有没有像html/android 这样的机制,你可以像getViewById() 这样以编程方式引用view/button/label/text

【问题讨论】:

    标签: objective-c xcode cocoa


    【解决方案1】:

    您可以使用-[NSView viewWithTag:](接受整数)在视图层次结构中搜索带有您在 Interface Builder、其他代码等中指定的标签的对象。

    记录在案here

    【讨论】:

    • 请注意,这比通过插座直接引用对象要慢得多。
    • 当然,更不用说[viewController myTextfield][[viewController view] viewWithTag:12] 更有意义。还有保持标签最新的问题。
    • 你可以用一个充满标签名称的头文件来改善它(例如,“MyTagInputField”),但你不能在 IB 中使用这些,所以你必须确保你使用的标签值在 IB 中与您在标题中指定的值匹配 - 明显违反 DRY 并具有通常的后果。
    • @Peter Hosey:这就是我的意思,w.r.t.无法在 IB 中使用头文件的定义。你知道视图标签的实际用例吗?
    • 我能想到的最接近的是将数组索引存储在其中,但即使这样也让我觉得很脏。能够将字符串,或者更好的是,任何属性列表甚至任何对象都与视图相关联会更有用。
    【解决方案2】:

    如果您以编程方式创建对象,则可以通过名称访问它。否则,您确实想使用插座。

    【讨论】:

    • 如果没有 [NSView viewWithTag:] 之类的东西,那是我的下一个选择,但我想使用 IB 的一些布局和对齐功能。
    • @dpham:所以?这如何阻止您使用网点?
    猜你喜欢
    • 1970-01-01
    • 2018-11-22
    • 2021-11-08
    • 2021-10-16
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2021-08-04
    • 2012-05-31
    相关资源
    最近更新 更多