【问题标题】:ios - Can I use an IBAction from another ViewController?ios - 我可以使用来自另一个 ViewController 的 IBAction 吗?
【发布时间】:2012-11-21 22:04:50
【问题描述】:

我正在使用情节提要,其中有 2 个自定义视图。

现在,如果我在主视图上有一个按钮,那么我可以移动嵌入的视图,但如果按钮在自定义视图上,我就无法获得相同的效果。是的,我可以移动我所在的 View Controller 的视图,但我无法控制父控制器的操作。

这是不可能的,还是我看错了?

请观察图片,我将解释我想要实现的目标:

请注意我看过这个问题:Passing an IBAction to another ViewController 这在我的设置中似乎不起作用。

好的,所以 Main Right 和 Main Left 按预期工作 - 它们将 Right SideVC 向右移动并显示左和后。

现在我希望这些行为发生在右侧 VC 和左侧 VC 上,因为我想删除 Main Right 和 Main Left 按钮。

【问题讨论】:

  • 为什么人们总是使用“IBAction”这个词?没有“IBAction”这样的东西。有动作,方法返回IBAction类型的值,等。请正确使用术语。
  • 很抱歉给你添麻烦了——再说一次,我只看到你抱怨其他问题,所以我没那么大惊小怪:-)
  • 我抱怨不仅因为它很烦人,而且主要是因为它令人困惑。我不想以任何方式骚扰任何人,但每个人都应该在这里使用正确的措辞,因为不这样做很难理解问题所在。
  • 是的 - 但如果你能使用正确的术语理解其他人的“行话”,这是否会让你成为更好的程序员,这很重要,但也是一个学习曲线:-)

标签: iphone ios uiviewcontroller custom-controls


【解决方案1】:

IBAction 只是 void 类型的方法,它不返回任何内容。放置名称 IBAction 只是为了简化接口的连接。因此,它类似于其他方法。只要对象在附近(在本例中为视图控制器)存在,您就可以调用它响应的任何方法。

【讨论】:

    【解决方案2】:

    所以我能够通过使用 AppDelegate 解决我的问题。我在几篇文章中读过它并不总是放置东西的最佳位置,但对此我认为还可以:-)

    -(IBAction)move03
     {
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        MainViewController* viewController = appDelegate.viewController;
        [_move01Button addTarget:viewController action:@selector(move01Action) forControlEvents:UIControlEventTouchUpInside];
     }
    

    【讨论】:

    • 打破设计模式以获得此功能是一个滑坡,我经常遇到需要修复旧项目的人,其中 AppDelegates 包含数千行代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多