草庐IT

ios - 我应该选择 ViewController 还是 TableViewController?

coder 2024-01-17 原文

Swift 新手。我正在尝试编写一个食谱共享应用程序来获得乐趣。其中一个功能是让用户创建一个新的食谱。在此页面上,用户应该能够介绍要创建的食谱,上传图像,然后动态添加成分列表(因为我们事先不知道总共有多少成分)。

我创建了一个 UIViewController,其中包括一个 UIViewTable、一个 ImageView 和一个“添加其他成分”按钮。我为成分创建了一个类。当按下“添加”按钮时,一个新的“成分”单元格将被添加到表格中。但是,我发现动态调整 UIViewTable 高度非常困难。

我希望我的表格根据单元格(行)的数量调整其高度。我没有在网上找到太多有用的信息。

或者我什至不应该使用这个结构。相反,只需使用 UITableController(整个页面是一个表格)?但我感到困惑的是,某些元素( ImageView 、提交食谱按钮、食谱介绍文本字段等)只会创建一次。为什么我费心将它们制作成原型(prototype)单元并以编程方式将它们添加到我的 View 中?

提前致谢!

最佳答案

首先,欢迎使用 Swift!

你把几个问题放在一起,我会尽量一一解答。让我们从简单的东西开始。

不要试图根据项目的数量改变 UITableView 的高度。如果你想实现类似的功能,看看 UIStackView。为 tableView 设置固定大小,最好使用自动布局进行约束。

如果没有足够的单元格来覆盖所有空间,UITableView 应该填充指定的空间并在内部滚动项目或在顶部显示单元格。 UITableView 经过高度优化,可以在背景上重复使用单元格时滚动大量单元格。如果您是 iOS 世界的新手,请查看此功能 https://developer.apple.com/documentation/uikit/uitableviewcell/1623223-prepareforreuse它可以节省您数小时的调试时间(我去过那里)

UITableView 与 UITableController UITableController 可以为您节省几行代码,但是在 UIViewController 内部使用 UITableView 可以给您更多的自由,并且如果您的应用程序将来可能会发生变化,则可以节省您的重构时间。 UITableController 没有特别的优势

如果您想提供额外的元素( ImageView 、提交按钮、文本字段等),您可以使用多种方法,这就是带有您自己的 UITableView 的 UIViewController 派上用场的地方。

  • 您可以像 native 日历应用一样,将一些按钮(例如加号图标或“完成”按钮)放入导航栏中。

  • 您可以将静态内容(介绍文本字段、 ImageView )放在表格 View 上方(始终可见)。使用约束将静态内容放在 viewController.view 上,并将 TableView 约束在静态内容下。 TableView 将占用更少的 View 空间,从而为您的内容保留空间。

  • 将您的静态内容作为表格 View 标题插入(将与内容一起滚动)。在堆栈溢出上搜索“HeaderView”,了解如何实现。

  • 将您的内容放在 tableView 上。如果您的按钮很小(圆形),您可以将它放在 tableView 上,例如。 Twitter 将其用于新的补间按钮。

希望这能回答您的问题。干杯!

关于ios - 我应该选择 ViewController 还是 TableViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57846134/

有关ios - 我应该选择 ViewController 还是 TableViewController?的更多相关文章

  1. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  2. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  3. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  4. ruby - Rails 3 的 RGB 颜色选择器 - 2

    状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基

  5. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  6. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  7. ruby-on-rails - 带有 Zeus 的 RSpec 3.1,我应该在 spec_helper 中要求 'rspec/rails' 吗? - 2

    使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做

  8. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  9. ruby-on-rails - Rails 单选按钮 - 模型中多列的一种选择 - 2

    我希望用户从一个模型的三个选项中选择一个。即我有一个模型视频,可以被评为正面/负面/未知目前我有三列bool值(pos/neg/unknown)。这是处理这种情况的最佳方式吗?为此,表单应该是什么样的?目前我有类似的东西但显然它允许多项选择,而我试图将它限制为只有一个..怎么办? 最佳答案 如果要使用字符串列,让我们说rating。然后在你的表单中:#...#...它只允许一个选择编辑完全相同但使用radio_button_tag: 关于ruby-on-rails-Rails单选按钮-模

  10. ruby - 为什么不能使用类IO的实例方法noecho? - 2

    print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上

随机推荐