我正在通过CS193p Stanford iOS课程工作,并且几乎完成了作业3 - 我将图形计算器转换为iPad的通用应用程序。当程序(例如“x + 3”)输入到计算器中,然后用户按下图形按钮时,应用程序绘制图形。在iPhone上,我只是segued当按下图形按钮,但在iPad上,我有一个UISplitViewController,我成立了由图形按钮目标的行动:iOS IBAction方法永远不会被调用
- (IBAction)ipadGraphPressed:(UIButton *)sender {
if ([self splitViewGraphViewController]) {
[[self.splitViewController.viewControllers lastObject] setProgram:self.brain.program];
}
}
这在GraphViewController,来电setProgram:
这然后在GraphView上调用setNeedsDisplay:
并绘制图形。
为了便于比较,这里是SEGUE方法对iPhone的作品:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
[segue.destinationViewController setProgram:self.brain.program];
}
我非常肯定的是,连接按钮,其操作方法之间建立,但是当我运行应用程序时,这个动作当按钮被按下时,方法永远不会被调用。还有什么要检查以确保方法被调用?
如果操作方法在按下按钮时没有被调用,那么'IBAction'不会正确地绑定到按钮上。你确定你把'IBAction'连接到了'Touch up inside'事件,并且你正在创建视图控制器的方式允许连接在实例化时为你自动装配吗? – aroth 2012-04-23 23:27:58
我很确定Touch Up Inside事件已连接。至于视图控制器设置,我不太确定。 iPhone的segue通过设置GraphViewController程序属性来工作,所以我在action方法中做了完全相同的事情。我认为这会起到同样的作用。 – Paul 2012-04-23 23:55:09
首先重新检查该按钮是否将其操作连接到ipadGraphPressed。然后添加NSLog(@“%@”,发件人);在方法内部,按下按钮并查看按钮是否正常工作。 – Pochi 2012-04-24 00:07:07