1

我正在学习 CS193p 斯坦福 iOS 课程,并且几乎完成了作业 3 - 在其中我也将图形计算器转换为适用于 iPad 的通用应用程序。当程序(例如“x + 3”)输入到计算器中,然后用户按下图形按钮时,应用程序会绘制图形。在 iPhone 上,当按下 Graph 按钮时,我只是简单地继续,但在 iPad 中,我有一个 UISplitViewController,我从 Graph 按钮设置了一个目标操作:

- (IBAction)ipadGraphPressed:(UIButton *)sender {
    if ([self splitViewGraphViewController]) {
        [[self.splitViewController.viewControllers lastObject] setProgram:self.brain.program];
    }
}

这会调用setProgram:GraphViewController,然后调用setNeedsDisplay:GraphView 并绘制图形。

为了比较,这是适用于 iPhone 的 segue 方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    [segue.destinationViewController setProgram:self.brain.program];
}

我非常确定按钮及其操作方法之间建立了连接,但是当我运行应用程序时,按下按钮时永远不会调用此操作方法。还有什么要检查的以确保调用该方法吗?

4

2 回答 2

2

我有同样的问题。我在 IBOutlets 和 IBActions 上正确连接了所有内容。导致问题的原因是按钮顶部的透明视图阻止了触摸。

在我调整视图大小以使其不会阻塞其下方的按钮后,它解决了我的问题。

于 2013-09-03T06:36:45.643 回答
0

事实证明,我的代码本身没有任何问题。在摆弄故事板之后,我注意到即使我在主视图中添加了新按钮,它们也不会在应用程序启动时出现。我尝试将情节提要的名称从更改iPad.storyboardiPad_1.storyboard,然后我的更改出现了,但我的轮换代码都没有生效。我对这整个混乱的解决方案是在我添加新故事板之前回溯到应用程序的先前版本。我重新添加了一个 iPad 故事板,并且能够建立所有正确的连接。

为了证实这一点,我的一个朋友在 Github 上查看了这个项目,并报告说虽然我无法调用 IBAction 方法,但对他来说它工作得很好。我相信我的本地故事板设置有问题,这导致应用程序无法正常工作。我从中得出的结论是要小心命名和重命名故事板文件,尤其是在处理版本控制时。

于 2012-04-25T16:22:25.723 回答