我正在尝试不同的事情,并在没有找到问题答案的情况下四处寻找。也许我正在做一些根本错误的事情。
示例应用程序包含:
使用segue显示第二个视图控制器的第一个视图控制器。这很好。
第二个视图控制器,我以编程方式模拟第三个视图的显示,其中包含我想要显示的条形项按钮(名为“完成”)。
第三个视图控制器中的条形项按钮在运行时不显示,但在设计时显示在IntefaceBuidler中。
第三个视图控制器需要以模态显示。
显示此条形项按钮我做错了什么?
A sample project illustrating the problem is available here.
在设计时的条形项按钮的屏幕截图下方:
在设计时未显示的条形项按钮的屏幕截图下方:
PS: 请忽略“Interface Builder文件中的未知类ThirdViewControlller。”,因为ThirdViewController在运行时显示正常。此外,视图中间的“完成”按钮工作正常。
答案 0 :(得分:2)
在self.navigationController?.pushViewController(thirdViewController, animated: true)
中你需要将第三个推到导航控制器堆栈上,如下所示:
UINavigationController
您目前正在将其作为模式展示。此外,您已经不必要地在故事板中添加了第二个let navController = UINavigationController(rootViewController: thirdViewController)
self.present(navController, animated: false)
(对于第三个视图控制器)
如果要呈现模态,则需要将控制器嵌入导航控制器中:
UINavigationController
如果您希望将其保留在故事板中,那么您需要为 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="100%" height="100%" viewBox="0 0 1600 700" enable-background="new 0 0 1600 700" xml:space="preserve">
<g>
<rect x="200" y="10" width="100" height="100">
<animate attributeType="XML" attributeName="x" from="-100" to="100%"
dur="10s" repeatCount="indefinite"/>
</rect>
</g>
</svg>
提供一个标识符,并在您的函数中保留该标识符。
答案 1 :(得分:0)
上面的按钮是一个导航栏项目,只会显示在导航栏上。为了达到理想的效果,首先必须至少在第二个视图控制器中嵌入导航控制器,然后你应该执行推送segue而不是模态。可以通过
添加导航控制器 self.navigationController?.pushViewController(nextViewController, animated: true)