通过 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 中

UILabel && UIButton

在新库 ViewController 上方添加 UIButton

如果 UIWINdow 的子视图,UIButton 单击不起作用

UIButton