菜鸟教程小白 发表于 2022-12-12 12:06:52

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


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

<p><strong>所以,这是我的超简单方案:</strong></p>

<ul>
<li><p>我想创建一个自定义 <code>NSView</code>(假设是一个包含图像和文本的简单 View ),我可以在 Interface Builder 中分配它(采取一个 <code>NSView</code> 元素并将其类设置为 <code>MYCustomView</code> - 仅此而已 - 没有更复杂的)</p></li>
<li><p>我知道我可以编写一个 <code>NSView</code> 子类并让它以编程方式在 <code>drawRect:</code> 中绘制我的所有元素以及所有这些 - 但我绝对不会找出其中的任何一点。</p></li>
<li><p>我想要的是在 Interface Builder 中简单地绘制 View (在我们的示例中,使用“占位符”图像和文本字段),能够将其用作我们 <code> 的“基础” NSView</code> 子类,并且还维护指向 View 中两个元素的指针,以便我可以通过编程方式访问它们。</p></li>
</ul>

<p>我知道这是可行的——我不是在问这个。我需要的是一个<em>超</em>-简单的演练。有什么可以指点我的吗?</p>

<p><strong>用...单行改写问题:</strong></p>

<p>如何将 <code>drawRect:</code> 中的编程方法(在 99.9% 的 NSView 子类中看到)替换为取自 XIB 的布局?</p>

<hr/>

<p><strong>附言</strong> </p>

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

<p>(B) 请不要用“你试过什么”的问题向我开枪。随着时间的推移,我尝试了很多东西,有时我<em>以某种方式</em>做到了。然而,我总是觉得我刚刚设法开始工作,这是一件糟糕的、一团糟的事情。不多也不少。我只想知道是否有关于上述简单场景的简单教程。</p>

<p>(C) 如果我得到一个实际的解释性答案,我保证我会自己重新发布。您简直无法相信有多少经验丰富的 Cocoa 开发人员在处理这个问题时遇到了严重的问题……</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我也一直想要“自定义” Storyboard类!</p>
<p>这<em>可能不完全</em>回答你的问题,但这正是我们现在在 iOS 中的做法:只使用容器 View 。</p>
<p>完整的超长教程:<a href="https://stackoverflow.com/a/23403979/294884" rel="noreferrer noopener nofollow">https://stackoverflow.com/a/23403979/294884</a> </p>
<p>现在 iOS 中的一切都是容器 View 。</p>
<p>我们所做的只是有一个场景,然后复制它:然后改变颜色或你描述的任何东西。</p>
<p>这是在此浏览器窗口后面打开的 Storyboard中的文字示例!</p>
<p> <img src="/image/nJitZ.png" alt="enter image description here"/> </p>
<p>注意小类/场景的东西,我们只是复制它。请注意,正如您所说,在示例中它是略微定制的。它们都是同一个类(它恰好被称为“BookBist”){“bist”==“bouncy list”btw}</p>
<p>那么正如我所说的<strong>容器 View 是 secret </strong>,因为,正是出于这个目的,这就是为什么苹果最终引入了“容器 View ”。</p>
<p>(顺便说一句,关于那个长容器 View 教程。向下搜索<em>如果你想要(比如)一个表格 Controller 或页面 ViewController 而不是 UIViewController 怎么办?</em>这是制作容器 View 时的关键技巧! 可笑的是,当您在容器 View 中拖动时,Apple 会为您提供“默认”VC;当然,您永远不会想要这样;在手头的示例中,我将连接到容器 View 的小型 BookBist 场景放在需要它们的任何地方。)示例.. .</p>
<p> <img src="/image/eRCU0.png" alt="enter image description here"/> </p>
<p>现在,<strong>我 10000% 明白你在问什么</strong>,并且一直想自己知道答案!</p>
<p>对于使用 HALF 的答案,正如我所说,“复制场景”以便在现代 Storyboard中完美运行。我很欣赏这很糟糕,因为你想要的<strong>是一个预制件,就像在任何游戏引擎中一样,例如 Unity3D</strong>,对吧?我也是!</p>
<p>但请注意,您的答案的另一半肯定是“容器 View 魔术”——“一切都是”现在 iOS 中的容器 View ,事实上,Apple 终于将它们放入其中,以合理的方式完成您所做的事情描述。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用来自 XIB 的自定义 NSView/UIView 子类?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26355112/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26355112/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用来自 XIB 的自定义 NSView/UIView 子类?