- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试使用自定义 UIStoryboardSegue
来实现两个 View Controller 之间的转换。我可以通过子类化 UIStoryboardSegue
来做到这一点,然后在 IB 中设置此类。但是,我正在查看文档,上面写着:
If your segue does not need to store additional information or provide anything other than a perform method, consider using the segueWithIdentifier:source:destination:performHandler: method instead.
暗示您不需要创建自定义子类,只需使用自定义的 performHandler。
我对这段代码应该放在哪里以及如何使用它感到困惑。我是否在 IB 中正常创建 segue,然后在它被触发之前覆盖它(可能在 shouldPerformSegue: 或类似的地方)。在苹果文档的其他地方,它说:
Your app never creates segue objects directly; they are always created on your behalf by iOS when a segue is triggered
所以我不太明白为什么他们会说要使用类创建器方法实例化一个 segue。
最佳答案
segueWithIdentifier:source:destination:performHandler:
的要点
UIViewController performSegueWithIdentifier:sender
的替代方法。 segueForUnwindingToViewController:fromViewController:identifier
如上所述,此方法仅适用于您手动调用的转场——即不适用于否则会通过 IB 触发器触发的转场。
因此,例如,如果您有一个需要在特定超时期限后触发的 segue(例如自定义锁屏),您可以使用 segueWithIdentifier:source:destination:performHandler:
处理自定义转换。
-(void)appTimeoutLockScreen
{
UIStoryboardSegue *segue =
[UIStoryboardSegue segueWithIdentifier:@"LockScreenSegue"
source:sourceVC
destination:destinationVC
performHandler:^{
// transition code that would
// normally go in the perform method
}];
// Dev is responsible for calling prepareForSegue and perform.
// Note, the order of calls for an IB triggered segue as well as
// a performSegueWithIdentifier segue is perform first, then
// prepareForSegue:sender. Manual segues need to inverse the call
// in order to ensure VC setup is finished before transition.
[self prepareForSegue:segue sender:self];
[segue perform];
}
该方法的另一个实际用途是展开转场。使用类似的场景对于前面的示例,我们可以使用它返回一个 segue 以从锁定屏幕转换回之前的 viewController:
-(UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController*)toVC
fromViewController:(UIViewController *)fmVC
identifier:(NSString *)identifier
{
UIStoryboardSegue *segue =
[UIStoryboardSegue segueWithIdentifier:@"FromLockScreenSegue"
source:fmVC
destination:toVC
performHandler:^{
// transition code
}];
return segue;
}
关于ios - 使用 segueWithIdentifier :source:destination:performHandler: 自定义 UIStoryboardSegue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143174/
我看过几个示例如何使用自定义动画呈现自定义 UIStoryboardSegue。基本上,您将 UIStoryBoardSegue 子类化并覆盖“perform”方法,即像这样: - (void)per
我有一个 UIStoryboardSegue 子类,用于将当前 View Controller 替换为下一个 View Controller 。 因为我们在界面编辑器中有一个 Animates 属性,
这个问题已经有答案了: Sharing an Image between two viewControllers during a transition animation (2 个回答) 已关闭 5
我目前正在构建一个目录结构,这应该能让我在我的 iOS 项目中更清楚地使用 MVC 模型。因此,我为我的 Models、Views、Controllers 和集成的 API 创建了一个文件夹,但不知道
我有一个带有一个 ViewController 和四个 UIStoryboardSegue 的 Storyboard。导航工作完美,但如果我想在 UIStoryboardSegue 中包含一个 web
有人可以解释使用 UIStoryboardSegue modal 与以编程方式使用 presentViewController 之间的区别吗? 使用UIStoryboardSegue只是为了方便?或者
所以我有一个 UITableView,并且单元格连接到 UIStoryboardSegue 以便打开一个新的 UIViewController。单击单元格后 prepareForSegue get 被
我以编程方式将 UIButton 附加到 navigationBar: catButton.addTarget(self, action: "oc:", forControlEvents: .Touc
自定义过渡对我来说相当陌生。我不得不将它们合并到我工作的最后一个项目中,并最终使用 UIViewControllerAnimatedTransitioning 协议(protocol)和自定义 seg
这就是我现在做的: func presentOverlayController(controller: UIViewController) { controller.modalPresenta
当我的自定义 segue 动画正在执行时,目标 View 显示为黑色。动画结束后出现 View ,看起来不错。 截图如下: 动画场景: 转场/动画完成后的 View : 这是自定义转场类: class
我正在编写一个应用程序,我需要在其中使用相当“复杂”的 UIStoryboardSegue。设计师给了我以下内容: 现在 segue 背后的基本思想很简单,向上滑动 source.view,然后再向上
我有以下 swift 代码,我想要实现的是从顶部滑出的 segue。我希望第二个 VCView 位于第一个 VCView 下方,并且让第一个 VCView 滑出显示第二个 VCView。 目前没有动画
我正在使用 Xcode 6.1 尝试创建从左到右的自定义转场。我正在学习本教程 click here .将类 NSObject 更改为 UIStoryboardSegue 时卡住了,如下所示: #im
我正在尝试将 Objective-C 方法转换为 Swift。 Objective-C 方法如下: - (void)prepareForSegue:(UIStoryboardSegue *)segue
有谁知道如何有条件地“停止”segue 转换: 我的表格 View 单元格代表可以在向下钻取的“详细信息” View 中查看的产品……或者不能! (这取决于几件事) 现在我的应用认为所有产品都已“解锁
我在创建自定义转场时遇到问题:我正在重写“perform()”方法,如下所示 override func perform() { if !isBack { self.desti
我有一个小型应用程序,它包含一个带有 UIImageView 的 View Controller 。当用户点击屏幕时,会显示一个带有自定义转换的 tableview Controller (模型)。过
我编写了一个自定义的 UIStoryboardSegue。 我的 CustomSegue.m 文件中的唯一代码是: -(void) perform { UIViewController* so
我编写了一个自定义的 UIStoryboardSegue,我用它在各种 UIViewControllers 之间进行转换。动画按预期工作,大部分时间 UIStoryboardSegue 在模拟器和设备
我是一名优秀的程序员,十分优秀!