Joh*_*kon 119 push storyboard xcode6 ios8
默认情况下,Xcode 6界面构建器具有新的复选框"使用大小类".它使视图自适应.

当我尝试在我的故事板中的2个视图之间制作segue时,我有了新的选择:

相反旧:

现在我们有"显示"和"呈现模态"而不是"推"和"模态".旧选项标记为已弃用.我选择了"show"选项,因为在segue设置中它称为"show(例如push)

但它没有推动.Segue动画看起来像从底部滑动(模态),导航栏消失.
问题是:如何让"show"像push一样工作?是否可以或者我应该使用"推(弃用)"代替?我在哪里可以找到有关新型segue的任何信息?我在iOS8开发人员库中找到的唯一一件事是Storyboards帮助您设计用户界面,但没有关于"show"segue的信息.
我试图创建新项目,"show"真的像"推"一样工作.我认为我的项目中的问题可能是因为我重复使用导航控制器这样的代码,但我不知道如何解决它.
if ( [segue isKindOfClass: [SWRevealViewControllerSegue class]] ) {
    SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue;
    swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {
        UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController;
        [navController setViewControllers: @[dvc] animated: NO ];
        [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
    };
}
Run Code Online (Sandbox Code Playgroud)
之后我尝试在MainViewController之后推送NewViewController

我似乎只是iOS 7,iOS 7.1问题.
小智 96
是的,使用'显示'而不是'推'
如何让"show"像push一样工作?是否可以或者我应该使用"推(去)"?
这应该; 它对我有用.我正在使用Xcode 6 beta 2并测试我使用单视图模板(在IB'VC_A'中调用预先制作的视图控制器).然后我添加了另一个视图控制器('VC_B').然后我在VC_A上添加了一个按钮以显示VC_B,另一个按钮从VC_B返回到VC_A.当我在故事板中添加导航控制器作为初始视图控制器并使VC_A成为rootViewController时,'push'和'show'都具有相同的效果.如果我没有初始导航控制器并使用'show',我会得到你所描述的内容,VC_B从底部向上滑动.如果我试图'推'我会崩溃,因为为了做推,我必须有导航控制器.所以看起来'show'会在提供导航控制器的情况下进行推动,并且如果没有导航控制器则执行具有模态转换样式的礼物.
我在哪里可以找到有关新型segue的任何信息?
所以,我发现了一些信息,在"什么在Interface Builder的新变化"会议在这里.如果您查看幻灯片,您会看到一张幻灯片(41)提到了更改.观看该会话视频时,您可以跳到38:00,开始谈论自适应segues.例如,他们确实解释了"show"自适应segue在决定如何进行新视图控制器的呈现时考虑了上下文.
alo*_*ono 32
已经有一个已接受的答案,但我想提供更多信息,可能是以前没有的信息.
如前所述,"推"和"模态"segue已被弃用,并分别被"show"和"present modally"取代.根据Apple的文档,新的segues进一步划分为适应大小等级的segue.较旧的应该只用于支持早于iOS 8的iOS版本.
以下链接中的文档说明了所有可用的段,旧的和新的描述.
如果URL在将来发生变化,这是对每个新segue的解释:
节目
根据屏幕内容在细节或主区域中显示内容.如果应用程序正在显示主视图和详细视图,则会将内容推送到详细信息区域.如果应用程序仅显示主数据或详细信息,则将内容推送到当前视图控制器堆栈的顶部.
查看详细
在详细信息区域中显示内容.如果应用程序显示主视图和详细视图,则新内容将替换当前详细信息.如果应用程序仅显示主数据或详细信息,则内容将替换当前视图控制器堆栈的顶部.
目前模态
以模态方式呈现内容.可以选择演示样式(UIModalPresentationStyle)和过渡样式(UIModalTransitionStyle).
作为Popover出现
将内容显示为锚定到现有视图的弹出窗口.可以选择指定弹出视图(UIPopoverArrowDirection)一个边缘上显示的箭头的可能方向.还有一个指定锚视图的选项.
Tom*_* C. 24
tldr; 删除未正确推送的Segue,并通过从UIView/UIControl拖动到目标视图控制器,在故事板中重新创建它.
其他答案没有任何问题,但是这个解释了发生了什么,如何验证它正在发生以及如何在将来缓解这个问题.
背景
在我的情况下,我的Show Segues都没有工作,即使我已经有一个UINavigationController作为我的初始视图控制器(我的内容UIViewController是它的根).
演出为何以及如何突破
Show segue在故事板的源xml中具有与segue相关联的动作时会中断.导致这种情况的典型情况可能是,如果您已从先前在代码中调用的手动segue重新定义了segue.这会在storyboard xml中留下以下位.
<connections>
    <segue destination="85t-Z1-hxf" kind="show" identifier="ToOptions" action="showDetailViewController:sender:" id="gdZ-IX-KcN">
</connections>
Run Code Online (Sandbox Code Playgroud)
Nota Bene 将故事板视为xml; 右键单击故事板文件,然后选择"打开方式">"源代码".要恢复使用,请打开> Interface Builder - Storyboard
要在使用故事板中的segue时适应任何自定义操作,只需点击prepareForSegue并拦截目标视图控制器并从该位置调用任何方法.在任何情况下,这个小错误的副作用(错误是当你重新定义segue时它没有在xml中正确设置〜即,在你将segue改为从UIView操作的一个之后,动作仍然存在(或者UIControl)到目标视图控制器).
不幸的是最直接的解决方案失败 因此,只要消除了对从故事板内的行动将XML属性不解决这个问题.相反,人们必须简单地删除并重新创建故事板中的segue.
重新创建时,故事板xml将不再具有与特定segue关联的操作,并且Show将作为Push执行.
示例Xml以获得正确的Show Segue
  <connections>
    <segue destination="RbV-Au-WV9" kind="show" identifier="ToOptions" id="5dm-os-bcS"/>
  </connections>
Run Code Online (Sandbox Code Playgroud)
减轻
为了防止再次发生,只需使用prepareForSegue根据目标视图控制器添加所需的操作,就可以坚持非手动故事板segue.或者,如果您必须混合搭配,请采取预防措施,以验证您的Show segues在storyboard xml中没有附加任何操作.如果您正在处理较旧的项目,那么您应该特别注意Storyboard源代码,因为我发现了一些问题.
Sen*_*ful 20
正如Scott Robertson在这里评论的那样,这看起来像iOS 7中的一个错误.
似乎在iOS 8中,转换是在运行时推断的(正确行为),而在iOS 7中,转换是在设计时推断的(错误行为).
最简单的解决方法是将未使用的导航控制器添加到故事板并将其链接起来,以便所讨论的视图控制器是此导航控制器的一部分.您实际上不必实例化导航控制器,您只需要错误的视图控制器就可以知道它嵌入在导航控制器中.
注意:模拟导航栏不足以满足这些目的; 你必须在它的推送栈中有一个导航控制器.
重现错误:
initWithRootViewController:方法将其嵌入导航控制器中.
要修复错误:
workaround for show segues in iOS 7).
请注意导航控制器是如何添加到第二张图片中的,以及它是如何没有任何传入箭头的(即除了使用其视图控制器标识符之外无法实例化它).
est*_*rhe 13
我知道我迟到了,但我想分享我学到的东西.这实际上是一个错误,今天仍然存在(2014-12-18).
我在这里写了一篇关于此的文章.
它很容易重现; 只要在调用Showsegue 之前没有以编程方式将视图控制器推入堆栈,iOS8上的工作就可以正常工作,甚至可以在iOS7.x中工作.
如果您只使用故事板连接推送到堆栈,它将起作用; 但显然如果你通过代码以某种方式推送推送的navigationController属性UIViewController将是nil,当你调用Show它将假设它的模态,因为没有导航来控制堆栈.
到目前为止,只有解决方法不是通过代码推送(不可行)或使用现在已弃用的Push.
我提交了一个雷达(链接在文章上).随着Apple修复此问题的希望,请随意提交重复文件.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           74140 次  |  
        
|   最近记录:  |