当前位置:首页 > 培训职业 > 正文

ios导航控制器控制器 怎么手动切换到

一个unwind segue可以在推送,模型和弹出连线(如果你弹出导航条的导航项,关闭弹出项或者销毁现有视图控制器的模型)时使用该技术。在它顶层,你可以直接展开多个而不仅仅是一个推送/模型/弹出项等。你可以使用一个解绑操作实现原本需要多步才可实现的,返回到导航层的功能。当你展示一个unwind segue时,你需要实例化一个行为(action),该行为是你想解绑到的视图控制器的一个方法。

- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue

{

}

该行为函数的名称在你创建unwind segue到存储版上的时候会被调用。并且,该方法会在unwind segue展示之前就会被调用。你可以通过传递的UIStoryboardSegue 参数获得源视图控制器。这样就可以和视图控制器进行交互操作。同时,这些参数也会初始化segue(比如获取模型视图控制器的属性)。在这个方面,它和UIViewController方法中的prepareForSegue有相似之处。

示例

让我们创建一个带有导航控制器的storyboard,创建三个视图控制器:

enter image description here

从绿色视图控制器你可以解绑(导航回退)到红色视图控制器。从蓝色可以转换到绿色或者从绿色转换到红色。为了使unwinding有效。你必须添加指定的行为方法到红色和绿色当中。例如:这里有一个红色里面的方法:

@implementation RedViewController

- (IBAction)unwindToRed:(UIStoryboardSegue *)unwindSegue

{

}

在行为方法添加后,你可以通过拖拽方式定义一个unwind segue到你存储版当中,图标为退回图标。这里我们想实现按下按钮时从绿色转换为红色:

enter image description here

你必须选择行为。因为该行为在视图控制器在定义了你想转到的地方:

enter image description here

你也可以从红色跳转到蓝色(在导航中需要两步堆栈操作)。关键是选择正确的unwind行为。在unwind segue发生作用之前,行为方法会被调用。实例中,我定义了一个从红色到绿色和蓝色的unwind segue。我们可以进入通过UIStoryboardSegue 参数进入unwind行为方法的的源文件,以便了解机制:

- (IBAction)unwindToRed:(UIStoryboardSegue *)unwindSegue

{

UIViewController* sourceViewController = unwindSegue.sourceViewController;

if ([sourceViewController isKindOfClass:[BlueViewController class]])

{

NSLog(@"Coming from BLUE!");

}

else if ([sourceViewController isKindOfClass:[GreenViewController class]])

{

NSLog(@"Coming from GREEN!");

}

}

解绑也可以通过混合推送/模型来运作。比如:如果我用segue添加了一个黄色视图控制器,我们可以实现仅用一步就可以跳转到红色视图:

enter image description here

从代码实现解绑

当你用拖拽方式定义了一个unwind segue来实现退出某个视图控制器时,一个新的segue就会出现在文件大纲中:

enter image description here

选择segue 进入属性面板找到"Identifier"属性。使用该属性来对你的segue进行唯一性命名:

enter image description here

多重随机标签

猜你喜欢文章