ios - 我应该选择 ViewController 还是 TableViewController?
<p><p>Swift 新手。我正在尝试编写一个有趣的食谱共享应用程序。其中一项功能是让用户创建新配方。在这个页面上,用户应该能够介绍要创建的食谱,上传图片然后动态添加成分列表(因为我们事先不知道总共有多少成分)。</p>
<p>我创建了一个 UIViewController,其中包括一个 UIViewTable、一个 ImageView 和一个“添加另一种成分”按钮。我为成分创建了一个类。当按下“添加”按钮时,表格中将添加一个新的“成分”单元格。但是,我发现动态调整 UIViewTable 高度非常困难。 </p>
<p>我希望我的表格根据单元格(行)的数量调整其高度。我在网上没有找到太多有用的信息。 </p>
<p>或者我什至不应该使用这种结构。相反,只使用 UITableController (整个页面是一个表)?但我对某些元素( ImageView 、提交食谱按钮、食谱介绍文本字段等)只会创建一次感到困惑。为什么我要费心将它们作为原型(prototype)单元格并以编程方式将它们添加到我的 View 中? </p>
<p>提前致谢!</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>首先,欢迎使用 Swift!</p>
<p>你把几个问题放在一起,我会尽量一一回答。让我们从简单的东西开始。 </p>
<p>不要试图根据项目的数量来改变 UITableView 的高度。如果你想实现类似的功能,看看 UIStackView。为 tableView 设置固定大小,最好使用自动布局进行约束。</p>
<p>如果没有足够的单元格覆盖所有空间,UITableView 应该填充指定的空间并在内部滚动项目或在顶部显示单元格。
UITableView 经过高度优化,可以在大量单元格上滚动,因为这些单元格在后台被重用。如果您是 iOS 世界的新手,请查看此功能 <a href="https://developer.apple.com/documentation/uikit/uitableviewcell/1623223-prepareforreuse" rel="noreferrer noopener nofollow">https://developer.apple.com/documentation/uikit/uitableviewcell/1623223-prepareforreuse</a>它可以为您节省数小时的调试时间(我去过那里)</p>
<p>UITableView 与 UITableController
UITableController 可以为您节省几行代码,但在 UIViewController 中使用 UITableView 可以为您提供更多自由,并且如果您的应用程序将来可能发生更改,则可以节省您的重构。 UITableController没有具体的优势</p>
<p>如果您想提供额外的元素( ImageView 、提交按钮、文本字段等),您可以使用多种方法,这就是带有您自己的 UITableView 的 UIViewController 派上用场的地方。</p>
<ul>
<li><p>您可以将一些按钮(例如加号图标或“完成”按钮)放入导航栏中,就像原生日历应用一样。 </p></li>
<li><p>您可以将静态内容(介绍文本字段、 ImageView )放在表格 View 上方(始终可见)。使用约束将静态内容放在 viewController.view 上,并将表格 View 约束在静态内容下。表格 View 将在 View 上占用更少的空间,从而为您的内容保留空间。</p></li>
<li><p>将您的静态内容作为表格 View 标题插入(将随着内容滚动)。在堆栈溢出时在此处搜索“HeaderView”以了解如何实现。 </p></li>
<li><p>将您的内容放在 tableView 上。如果您的按钮很小(圆形),您可以将它放在 tableView 上,例如。 Twitter 将其用于新的补间按钮。 </p></li>
</ul>
<p>希望这能回答您的问题。干杯!</p></p>
<p style="font-size: 20px;">关于ios - 我应该选择 ViewController 还是 TableViewController?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/57846134/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/57846134/
</a>
</p>
页:
[1]