草庐IT

ios - 转到当前 View UItableView

coder 2024-01-13 原文

我的 tableview 中有未定义的层数(深度),所以我希望能够在 View 和它本身之间创建一个 segue,这样只要我有要发现的子层,我就可以调用它。我该怎么做?

我曾想过在需要时直接使用 [self.navigationView pushViewController],但我希望新 Controller 使用我 SB 中定义的 View 。

谢谢,

编辑:目前我找到的唯一解决方案是复制 VC,在 VC1 和 VC2 之间设置一个名为“showNext”的转场,以及以相同方式调用 VC1 和 VC2 之间的转场。有没有更好的解决方案?

最佳答案

如果您使用的是动态单元格原型(prototype),您显然可以毫无问题地从表格 View 单元格转到 Controller 。

当你进行 segue 时,你会得到:

但让我们想象一下,有一些不适合您的原因,例如您无法从单元格中调用 segue(例如,您需要从 didSelectRowAtIndexPath 调用 segue,而不是在选择单元格时调用)。在这种情况下,您无法使用之前的技术。

在这种情况下有几个选项:

  1. 作为pointed out by Chris ,如果只支持 iOS 6 及以上,使用上述技术,但是 (a) 确保你的 didSelectRowAtIndexPath 使用 self 作为 sender 然后shouldPerformSegueWithIdentifier 仅在 sender == self 时允许转场(因此当 sender 是表格 View 单元格时,它将被取消);

  2. 也许更简单,根本不定义 segue 并手动设置 didSelectRowAtIndexPath instantiateViewControllerWithIdentifier然后适本地推送/呈现该 View Controller ;或者

  3. 您可以使用以下笨拙的变通方法:简而言之,向您的 View Controller 添加一个按钮(将其向下拖动到底部的栏),它不会显示在 View 中,但你可以使用它的segues。所以首先,将圆形按钮拖到场景底部的 Controller 栏上:

    现在您可以从该按钮到您的 View Controller 进行转场:

    因此,您再次以 self 引用的方式结束:

    您必须为该 segue 提供一个标识符,以便您可以通过 performSegueWithIdentifier 以编程方式调用它,但它有效。这不是最优雅的解决方案,但我认为这比在 Storyboard上添加一个额外的场景要好。

这些都不是理想的,但您有很多选择。

关于ios - 转到当前 View UItableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13539227/

有关ios - 转到当前 View UItableView的更多相关文章

  1. 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返回它复制的字节数,但是当我还没有下

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

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

  3. 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使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  4. ruby - 如何找到调用当前方法的方法 - 2

    如何找到调用此方法的位置?defto_xml(options={})binding.pryoptions=options.to_hifoptions&&options.respond_to?(:to_h)serializable_hash(options).to_xml(options)end 最佳答案 键入caller。这将返回当前调用堆栈。文档:Kernel#caller.例子[0]%rspecspec10/16|===================================================62=====

  5. 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上

  6. ruby - 以毫秒为单位获取当前系统时间 - 2

    在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题:

  7. ruby-on-rails - 我需要从 HTML 转到 markdown,有什么建议吗? - 2

    我正在使用Maruku,将Markdown(超集)转换为HTML,你知道我该怎么做才能从HTML转换为Markdown吗? 最佳答案 Google发现了一个名为reverse_markdown的ruby​​脚本.它似乎可以满足您的需求。 关于ruby-on-rails-我需要从HTML转到markdown,有什么建议吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/175162

  8. ruby - 当前的 Ruby 方法是通过 super 调用的吗? - 2

    在运行时的方法中,有没有办法知道该方法是否已通过子类中的super调用?例如moduleSuperDetectordefvia_super?#whatgoeshere?endendclassFooincludeSuperDetectordefbarvia_super??'super!':'nothingspecial'endendclassFu"nothingspecial"Fu.new.bar#=>"super!"我如何编写via_super?,或者,如果需要,如何编写via_super?(:bar)? 最佳答案 可能有更好的方法

  9. ruby-on-rails - 获取当前时间的单元测试代码 - 2

    为获取当前时间的代码编写单元测试的最佳方法是什么?例如,某些对象可能仅在工作日创建,其他对象在检查执行某些操作的权限时会考虑当前时间等。我想我应该模拟Date.today和Time.now。这是正确的做法吗?更新:两种解决方案(a)Time.is和(b)Time.stubs(:now).returns(t)都有效。(a)是非常好的方法,但(b)解决方案将与其他测试代码更加一致。在此question作者要求一个通用的解决方案。对于Ruby,在我的选项中,上述两个解决方案是simpler因此比提取获取当前日期/时间的代码更好。顺便说一句,我建议使用Chronic获得所需的时间,例如requ

  10. ruby - 为 IO::popen 拯救 "command not found" - 2

    当我将IO::popen与不存在的命令一起使用时,我在屏幕上打印了一条错误消息:irb>IO.popen"fakefake"#=>#irb>(irb):1:commandnotfound:fakefake有什么方法可以捕获此错误,以便我可以在脚本中进行检查? 最佳答案 是:升级到ruby​​1.9。如果您在1.9中运行它,则会引发Errno::ENOENT,您将能够拯救它。(编辑)这是在1.8中的一种hackish方式:error=IO.pipe$stderr.reopenerror[1]pipe=IO.popen'qwe'#

随机推荐