Ala*_*lan 31 xcode storyboard segue
我已经通过展开segues部分观看了故事板实现的苹果演示视频,并在主视图上使用自定义按钮观看了演示.这很好.
我也看到了同样的事情的一个很好的例子也有效.http://www.techotopia.com/index.php/Using_Xcode_Storyboarding_%28iOS_6%29#Unwinding_Storyboard_Segues
但是,我希望有一个正常的推送segue从父(带有主窗体数据)传递到子(具有高级设置选项),然后使用导航栏中的后退按钮返回到父视图控制器,而不是使用自定义按钮视图中显示的视图.然后,当按下父控制器上的另一个保存按钮时,父控制器将所有内容保存到API服务器.
我似乎无法覆盖导航后退按钮将其指向我的展开segue动作,因为后退按钮没有出现在故事板上,我无法将绿色的"退出"按钮拖到它上面
我在viewDidLoad中尝试过这个来覆盖动作,但它没有用[self.navigationItem.backBarButtonItem setAction:@selector(unwindSegueAction :)];
是否可以使用后退按钮展开推送segue?
到目前为止我最好的想法是覆盖viewDidLoad方法中的后退按钮,但这会删除成角度的后退按钮样式,对于一个简单的问题看起来似乎是一个粗略的黑客
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:self action:@selector(unwindSegue:)];
Run Code Online (Sandbox Code Playgroud)
我知道有使用协议和委托的答案,但我有兴趣使用Xcode4.5展开segue方法
Ala*_*lan 14
最后我不需要解开segue,因为我仍然可以通过跟随导航控制器获得对父控制器方法的引用.
我可以通过以下方式获得参考 - (void)viewWillDisappear:(BOOL)animated在子控制器方法中
NSInteger currentVCIndex = [self.navigationController.viewControllers indexOfObject:self.navigationController.topViewController];
FirstViewController *parent = (FirstViewController *)[self.navigationController.viewControllers objectAtIndex:currentVCIndex];
parent.barcodeType = indexPath.row;
Run Code Online (Sandbox Code Playgroud)
它将设置变量完美地传回原始控制器.
我还在childcontroller的顶部添加了对父控制器的导入引用
@Alan走在正确的轨道上.只需添加一个测试,以防止在不返回第一个视图控制器时触发segue.viewWillDisappear中的这样的东西实际上允许你为后退按钮执行展开segue.您需要通过从类向下拖动到退出图标来创建手动展开segue.请务必在创建后为其命名.
UIViewController *vc = self.navigationController.topViewController;
if ([FirstViewController class] == [vc class])
{
[self performSegueWithIdentifier:@"unwindSegue" sender:self];
}
Run Code Online (Sandbox Code Playgroud)
我想在上面的@Chuck H建议之后添加一个Swift解决方案:
let rootVC = self.navigationController!.topViewController
if rootVC.isKindOfClass(TheNameOfYourViewController) {
performSegueWithIdentifier("yourNamedSegueIdentifier", sender: self)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22640 次 |
| 最近记录: |