gpt4 book ai didi

ios - 使用来自 XIB 的自定义 NSView/UIView 子类?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:27 28 4
gpt4 key购买 nike

好吧,这听起来可能很基础(尤其是对于编写过数万个 Objective-C 代码的人来说),但我一直试图避免所有这些……或者只是调整现有的解决方案。结果?我从来没有学会如何做这样简单的事情。

所以,这是我的超简单场景:

  • 我想创建一个自定义的 NSView(比方说一个带有图像和文本的简单 View ),我可以在 Interface Builder 中分配它(取NSView 元素并将其类设置为 MYCustomView - 仅此而已 - 没有比这更复杂的了)

  • 我知道我可以编写一个 NSView 子类并让它以编程方式在 drawRect: 中绘制我的所有元素以及所有这些 - 但我绝对不会找到其中的任何一点。

  • 我想要的是简单地在 Interface Builder 中绘制 View (在我们的示例中,带有“占位符”图像和文本字段),能够将其用作我们的 的“基础” NSView 子类,并且还维护指向 View 中两个元素的指针,以便我可以通过编程方式访问它们。

我知道这是可行的 - 我不是问这个。我需要的是 super -简单的演练。有什么可以指点我的吗?

用...改写问题:

如何用取自 XIB 的布局替换 drawRect: 中的编程方法(出现在 99.9% 的 NSView 子类中)?


附言

(A) 相信我,这一定是我第 100 次阅读有关 NSViewController 和所有这些内容,但没有使用它们,可能意味着我还没有找到使用它们的意义...

(B) 拜托,不要用“你试过什么”来问我。随着时间的推移,我尝试了很多东西,有时我不知何故 做到了。然而,它总是感觉像我刚刚设法开始工作的糟糕、困惑的事情。仅此而已。我只想知道是否有针对上述简单场景的简单教程。

(C) 如果我得到一个真正的解释性答案,我保证我会自己重新发布它。您简直不敢相信有多少经验丰富的 Cocoa 开发人员在处理这个问题时遇到了严重的麻烦...

最佳答案

我也一直想要“自定义” Storyboard类!

可能无法完全回答您的问题,但这就是我们现在在 iOS 中的做法:只需使用容器 View 。

完整超长教程:https://stackoverflow.com/a/23403979/294884

现在 iOS 中的一切都是容器 View 。

我们所做的只是创建一个场景,然后复制它:然后根据您的描述更改颜色或任何内容。

这是在这个浏览器窗口后面打开的 Storyboard 中的一个文字示例!

enter image description here

注意小类/场景的东西,我们只是复制它。请注意,在示例中它是稍微定制的,就像您说的那样。他们都是同一个类(class)(它恰好被称为“BookBist”){“bist”==“bouncy list”btw}

然后正如我所说容器 View 是 secret 因为,嗯,正是为了这个目的,这就是苹果最终引入“容器 View ”的原因。

(顺便说一句,关于那个很长的容器 View 教程。向下搜索如果您想要(比方说)表 Controller 或页面 View Controller 而不是 UIViewController 怎么办?这是制作容器 View 时的关键技巧! 可笑的是,当您拖入容器 View 时,Apple 会为您提供一个“默认”VC;当然您永远不会想要那个;在手边的示例中,我将小型 BookBist 场景连接到容器 View ,无论它们在哪里需要。)示例.. .

enter image description here

现在,我 10000% 明白你在问什么,并且我一直想知道答案!

对于使用一半的答案,正如我所说,“复制场景”以便在现代 Storyboard中完美工作。我很欣赏这很糟糕,因为你想要的是一个预制件,就像在任何游戏引擎中一样,比如 Unity3D,对吧?我也是!

但请注意,您答案的另一半肯定是“容器 View 魔法”——iOS 中现在的“一切”都是容器 View ,实际上 Apple 最终将它们放入其中,以做出一种合理的方式来做您想要做的事情描述。

关于ios - 使用来自 XIB 的自定义 NSView/UIView 子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355112/

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