2012-04-23 10 views
1

私はCS193pスタンフォードiOSコースを卒業しています。私はグラフ作成の電卓をiPad用の普遍的なアプリケーションにも変換する課題3でほぼ完了しました。このアプリは、プログラム(「x + 3」など)が電卓に入力された後、グラフボタンを押したときにグラフを描画します。iOS IBActionメソッドが呼び出されない

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

これは、GraphViewControllerでsetProgram:を呼び出す:グラフ]ボタンを押したのですが、iPadの中で、私はグラフのボタンから目的のアクションを設定UISplitViewControllerを持っていた時にiPhoneで、私は単にsegued GraphViewでsetNeedsDisplay:を呼び出し、グラフを描画する必要があります。

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

私は、接続がボタンとそのアクションメソッドの間で確立されていることを非常に確信しているが、私はアプリを実行して、このアクション:

比較のために

は、ここではiPhone上で動作セグエ方法であり、ボタンが押されたときにメソッドが呼び出されることはありません。メソッドが呼び出されることを確認するために何かチェックする必要はありますか?

+0

ボタンを押したときにアクションメソッドが呼び出されない場合、「IBAction」はボタンに正しくバインドされていません。 'IBAction'を 'Touch up inside'イベントに接続し、インスタンス化時に接続が自動的に接続できるようにView Controllerを作成していますか? – aroth

+0

私はTouch Up Insideイベントが接続されていると肯定的です。 View Controllerのセットアップに関しては、私はあまりよく分かりません。 iPhone Segueは、GraphViewControllerプログラムのプロパティを設定することで動作します。したがって、私はアクションメソッドで全く同じことを行いました。私はそれが同じように動作すると仮定しました。 – Paul

+0

最初にそのボタンのアクションがipadGraphPressedに接続されていることを再確認します。 NSLog(@ "%@"、送信者)を追加します。メソッド内で、ボタンを押して、ボタンが機能しているかどうかを確認します。 – Pochi

答えて

0

私のコード自体に問題はありませんでした。ストーリーボードを操作した後、私はマスタービューに新しいボタンを追加しても、アプリケーションが起動したときには表示されないことに気付きました。ストーリーボードの名前をiPad.storyboardからiPad_1.storyboardに変更しようとしましたが、変更が反映されましたが、私のローテーションコードは有効ではありませんでした。私がこの新しいストーリーボードを追加する前に、直前のバージョンのアプリに戻すことが私の解決策でした。私はiPadのストーリーボードを再追加し、すべての正しい接続を行うことができました。

これを確認するには、私の友人がGithubのプロジェクトをチェックアウトし、IBActionメソッドを呼び出せなかったが、彼は完全に正常に機能していると報告しました。私は、私のローカルストーリーボードの設定に何かが混乱していると信じて、アプリケーションが正しく動作するのを妨げていました。これからの私の持ち帰りは、特にバージョン管理を扱う際には、ストーリーボードファイルの命名と名前の変更に注意することです。

2

私は同じ問題を抱えていました。私はIBOutletsとIBActionsにすべてを正しく接続しました。問題の原因は、タッチを妨げているボタンの上に透明なビューがあることです。

ビューのサイズを変更して、その下のボタンをブロックしないようにしたところ、問題は解決しました。

関連する問題