通过 UIButton 从 Appdelegate 导航到另一个视图
Posted
技术标签:
【中文标题】通过 UIButton 从 Appdelegate 导航到另一个视图【英文标题】:Navigate to another view from Appdelegate through a UIButton 【发布时间】:2015-03-25 08:40:21 【问题描述】:我有以下问题。我在我的 Appdelegate 中创建了一个 UIButton,我希望该按钮将我导航到另一个 ViewController。我已经从我的 Storyboard 中建立了一个连接,这个连接是 Modal Segue 类型。我认为 performSegueWithIdentifier 可以完成这项工作,但它给了我以下错误“没有带有标识符'showCamera'的segue”。而且我很确定我已经通过情节提要制作了该标识符。
let camera = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
camera.addTarget(self, action: "takePicture:", forControlEvents: .TouchUpInside);
//this function works
func takePicture(sender: UIButton!)
println("Open Camera")
//this throws an error
self.window?.rootViewController?.performSegueWithIdentifier("showCamera", sender: self)
【问题讨论】:
为什么从 AppDelegate 初始化? 你有什么建议? @Dato'MohammadNurdin 我在我的 UITabbar 中制作了一个自定义按钮,因此我可以谨慎地调用 UIPickerController。我必须在 appdelegate 中创建该按钮,因为我的标签栏已在那里初始化。如果您有任何其他更受欢迎的建议。 【参考方案1】:不要在 appDelegate 中添加任何视图组件。只需将 UIViewController 设置为窗口的 rootViewController。然后给UIViewController添加按钮。像这样,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
[self.window makeKeyAndVisible];
ViewController *vc = [[ViewController alloc]init];
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:vc];
self.window.rootViewController = navController;
// Override point for customization after application launch.
return YES;
在 ViewController.m 中添加您需要的 UI 组件。
【讨论】:
我在 Swift 中工作,您提供的示例是在 Objective C 中。Swift 没有实现文件。以上是关于通过 UIButton 从 Appdelegate 导航到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章
在 AppDelegate 中设置 UIButton 外观时如何更改 SafariViewController 中导航栏的色调
Xcode11 - UIButton 等控件高度为 48,仅在 XR/XSMAX 设备中的 AppDelegate 中
在新库 ViewController 上方添加 UIButton