0

したがって、これに似た以前の質問を見たことがありますが、役に立ちませんでした。Apple のドキュメントも読みましたが、どこが間違っているのか理解できませんでした。私の知る限り、私はすべてを論理的に行いましたが、UItoolbar オーバーレイの完了ボタンをクリックすると、ボタンを押すことはできますが、何もしません。これは明らかに、書かれたコードを認識できないことを意味します。しかし、どのように?

UIToolBar で完了ボタンがクリックされたときに、「TableViewController」の .nib を表示したいと考えています。ただし、以下では、クリックして新しいビューを表示することはできません。これを修正するにはどうすればよいですか?どこが間違っていたのか、何を置き換える必要があるのか​​、その理由を教えてください。

-(void)doneButtonPressed {

TableViewController *UIView = [[TableViewController alloc]
initWithNibName:@"TableViewController" bundle:nil];
UIView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:UIView animated:YES];
[UIView release];

}
4

3 に答える 3

1

おっと、ここで奇妙なことが起こっています。最初の行では、インスタンスを正しく割り当てて開始してTableViewControllerいますが、そのインスタンスに一意の名前を付けていません。別のクラスの名前で名前を付けているので、問題が発生する可能性があります。実際、エラーが発生しなかったのには驚いています。

代わりに次を試してください。

TableViewController *tableView = [[TableViewController alloc]
initWithNibName:@"TableViewController" bundle:nil];
tableView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:tableView animated:YES];

これで、TableViewControllerインスタンスには、メソッドの残りの部分全体で参照される一意の名前が付けられます。明確にするために-UIViewは別のクラス名であるため、オブジェクトのインスタンスの名前として使用することはできません。

編集:doneButtonPressed:さらに、ボタンのセレクターをそのViewControllerの.hファイルに必ず追加してください。NSLog()また、必要に応じて、関数の先頭で呼び出しを投げて、呼び出されていない(または呼び出されている可能性がある)ことを確認することもできます。

于 2012-07-29T06:43:33.720 に答える
0

クラス名を変数名として使用することに制限はありません。ただし、紛らわしく、iOS コーディング規則に従っていないため、変更する必要があります。

「ボタンを押すことはできますが、何もしません」、セレクターも呼び出されていますか?

-(void)doneButtonPressed

UIBarButtonItem をどのように作成したかを示して、init メソッドで正しいセレクターを提供したこと、またはインターフェイス ビルダーでボタンを直接接続したことを確認します ((IBAction) リターン シグネチャを使用しなかったため、このようには見えません)。

于 2012-07-29T11:23:00.850 に答える
0

ボタン アクションが起動しない場合に確認すべきことは、適切なセレクターがあることです。セレクターに正しく従った場合。のセレクターを使用していないことを確認してください

@selector(doneButtonPressed:)

次のような関数を探します:-

- (void) doneButtonPressed:(id) sender

メンバー関数には、必要です

@selector (doneButtonPressed)

ここでは、デバッガーがあなたの味方です。ブレークポイントから開始して、関数が呼び出されていることを確認します。

関数に取り掛かっている場合は、クラーケンの答えが次にチェックすることです.

于 2012-07-29T07:02:42.667 に答える