【问题标题】:ios How to put custom controller redirect obj-c code in custom viewios如何将自定义控制器重定向obj-c代码放在自定义视图中
【发布时间】:2016-04-11 09:48:01
【问题描述】:

我是 ios 应用程序开发的新手,也是 Objective-c 编码的新手。我不知道这是否可能。首先让我描述一下我做了什么,然后我会描述我想要什么。我在下面添加了屏幕截图,您可以直接查看或先阅读说明再查看屏幕截图。

所以,我创建了一个带有自定义视图的自定义 xib。我将其命名为 Menu.h 和 .c

我在那里放置了四个按钮,每个按钮都是在该自定义视图中创建的 IBOutlet。它们现在是在运行时创建的。我必须在情节提要中的“用户拒绝运行时属性”设置下为控制器设置一些属性。我可以使用 awakeFromNib 函数在自定义视图中获取该值。有了它,现在我可以轻松访问和更改这些按钮的属性。我还可以使用此代码对这些按钮进行操作

[btnOutlet addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];

我正在采取行动。

但我想做的是能够使用控制器重定向代码,如下所示

      NSString * storyboardName = @"Main";
     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
     ViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
     [ViewController presentViewController:vc animated:YES completion:nil];

它在控制器中正常工作,但现在当我尝试将自定义视图中的该按钮操作放入该按钮操作时,它显示错误“'菜单'没有可见界面声明选择器......”。我在下面添加了屏幕截图。

no visible interface for 'Menu' declared the selector

请建议我能做些什么来解决这个问题?这让我发疯了。 :)

【问题讨论】:

  • presentViewController 方法只为UIViewController 子类声明。看来您的 Menu 类没有继承自 UIViewController
  • 你的自定义类的超类是哪个?
  • 是的,你是对的 redent84。它是 UIView Payal Maniyar

标签: ios objective-c iphone xib


【解决方案1】:

使用情节提要时最好使用转场。在 IB 中添加一个从视图控制器(推送)到另一个视图控制器并调用 performSegue 方法:

 [self performSegueWithIdentifier: @"MySegue" sender: self];

【讨论】:

    【解决方案2】:

    确保您在 UIViewController 子类中。

    从架构的角度来看,不要在 View Class 中执行类似的代码,而是使用 ViewController(因此此类方法仅在 UIViewController 子类中可用)

    在您的 Storyboard 中创建一个带有唯一标识符的 segue,例如“ViewControllerSegue”,然后调用

    [self performSegueWithIdentifier:@"ViewControllerSegue"];
    

    并在

    中设置您的 ViewController
    - (void)prepareForSegue:(UIStoryboardSegue *)segue
                 sender:(id)sender;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多