菜鸟教程小白 发表于 2022-12-13 00:42:04

iphone - 子类化 UITableView 所以它不需要 xib


                                            <p><p>我制作了一个只包含 IB 中的 UITableView 的 XIB。引起我注意的是,可以继承 UITableViewController 并完全取消 xib。</p>

<p>我的问题是,你是怎么做到的?</p>

<p>到目前为止,我唯一改变的是我的 .h 是...</p>

<pre><code>   @interface MyView : UITableViewController
</code></pre>

<p>并删除了我的 XIB。显然我得到一个错误,指出 </p>

<pre><code>*** Terminating app due to uncaught exception &#39;NSInternalInconsistencyException&#39;,
reason: &#39;Could not load NIB in bundle: &#39;NSBundle(loaded)&#39; with &lt;path&gt;
name &#39;MyView&#39;&#39;
</code></pre>

<p>所以我的问题是,为了正确完成这个子类化,还剩下什么?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>有两种方法可以在 iOS 中设置 ViewController 。 </p>

<ul>
<li>使用 .xib 文件:您使用 <code>-initWithNibName:bundle:</code> 实例化 ViewController ,将 .xib 文件的名称作为第一个参数传递,并且(除非您正在执行一些高级操作stuff) <code>nil</code> 作为第二个参数。操作系统将查找您的 .xib 文件并将其反序列化为一堆对象并将它们附加到您的 ViewController 。然后操作系统调用您的 ViewController 子类的 <code>-viewDidLoad:</code> 方法,您在此完成设置。 </li>
<li>以编程方式:您使用 <code>-init</code> 实例化 ViewController ,或者对于 TableViewController ,<code>initWithStyle:</code>。操作系统然后调用您的子类的 <code>-loadView</code> 方法,您可以在其中手动实例化 View 层次结构。 </li>
</ul>

<p>听起来你只需要用 <code>-initWithStyle:</code> 而不是 <code>-initWithNibName:bundle:</code> 来实例化它。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 子类化 UITableView 所以它不需要 xib,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/14613998/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/14613998/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 子类化 UITableView 所以它不需要 xib