yas*_*sin 57 push views storyboard ios
我正在寻找其他方法来以编程方式推送在故事板上实例化的视图控制器.我实际上找到了两种方法,我用它来进入下一个视图,但也回到上一个视图:
使用pushViewController:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
LocationWebView *lvc = [storyboard instantiateViewControllerWithIdentifier:@"LocationWebView"];
[self.navigationController pushViewController:lvc animated:YES];
Run Code Online (Sandbox Code Playgroud)以Segue编程方式执行:
[self performSegueWithIdentifier: @"SongSegue" sender: self];
Run Code Online (Sandbox Code Playgroud)您是否有关于替代品的一些提示以及应该执行此操作的最佳方式?请注意,我不是指模态视图.
ric*_*ter 36
Apple建议使用performSegueWithIdentifier:sender:someObject以编程方式执行segues.这样做至少有几个好处:
更少的自己的代码意味着你让框架做更多的工作.如果Apple为推送segue提供了一些超酷的新视觉效果,或者提高了性能,或者修复了未来iOS版本中的错误,那么您的应用程序可以免费获得.并且你编写的每一行代码都可以为框架工作,这会增加你编写bug的机会.
IB中的更多信息意味着更容易改变.如果您决定要将所有推送segue更改为模态segue,或者您自己的超酷视觉效果的某些自定义segue类型,您可以在IB中选择'em all并通过单击而不是搜索来更改segue类型在你的代码中.
此外,无论您使用第一种方法还是第二种方法,推送视图控制器以"返回"到以前的视图控制器都不会像用户期望的那样工作.当你按a时SongViewController,它被添加到导航堆栈的末尾:
LocationViewController -> SongViewController
Run Code Online (Sandbox Code Playgroud)
如果你再按一下LocationViewController去"后退":
LocationViewController -> SongViewController -> LocationViewController
Run Code Online (Sandbox Code Playgroud)
如果用户点击导航栏中的后退按钮,他们将再次从位置视图返回到歌曲视图到位置视图.(另外,如果你继续这样做,每一个"后退"和"前进"都会增加一个不断增加的视图控制器链,这可能会导致其他麻烦.)
相反,您应该让导航控制器处理回去.它为此目的在导航栏中放置了一个按钮,它应该处理大多数用例.如果你需要让自己的控制回去,你不能在iOS 5的IB中这样做,但你可以使用导航控制器的popViewControllerAnimated:方法以编程方式完成.
就个人而言,当我位于 UINavigationController 下的 UIViewController 中时,我使用#2。我认为没有 UINavigationController 就行不通。
当我使用 UITabBarController 下的视图时,我使用以下代码转换到另一个选项卡:
NSUInteger tabIndex = 2; // Index of the tab I want to select
UIViewController * viewCtrl = [_tabController.viewControllers objectAtIndex:tabIndex];
_tabController.selectedViewController = viewCtrl;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61327 次 |
| 最近记录: |