0

私はObjectivecに不慣れで、デリゲートの方法論と使用法を把握しようとしています。現在、Alertviewクラスがあり、その関数を呼び出すための別のクラスを作成するために必要です。私はappdelegateクラスで同じことをすることができました。しかし、私自身のクラスではそれを行うことはできません。

                TableViewController *newControll = (TableViewController*)[UIApplication sharedApplication].delegate;
                [newControll openSettings];

それが私のメソッドにアクセスしようとしている方法です。コンパイラーはnewControllでこのメソッドを参照しますが、これを呼び出すと認識されないセレクターになります。

基本的に、別のクラスから、以前に作成された関数を呼び出す必要があります。これが単純な解決策である場合は申し訳ありませんが、デリゲートとObjective-cをまだ十分に把握できていません。

たぶん、誰もが私がしなければならないことを理解しているわけではないので、もう一度説明しようと思います。

オブジェクトがありますTableViewController。内部のこのオブジェクトから、クラスを呼び出しAlertViewてアラートメッセージを表示しています。また、アラートダイアログでのユーザーの操作(パスワードはOK、パスワードはOKではありません)に応じてopenSettings、自分でメソッドを呼び出すTableViewControllerか、呼び出さないようにする必要があります。では、これを行う方法は?

4

1 に答える 1

1

あなたTableViewControllerの appdelegate クラスでない場合は、 のオブジェクトTableViewControllerを使用してメソッドを使用する必要がありますopenSettings

それは次のようなものでなければなりません、

TableViewController *newControll = [[TableViewController alloc] init];

新しい に移動するとしますalertView。あなたのAlertView.hファイルに、

@property(nonatomic, retain) TableViewController *tableViewController;

そして、新しいalertViewオブジェクトを作成しながら、

AlertView *alertView = [[AlertView alloc] init];
//some code..
alertView.tableViewController = self;

AlertViewクラスで、次のように呼び出します。

[self.tableViewController openSettings];

appdelegate の使用は、それを行う方法ではありません。

iOS のチュートリアルが必要な場合は、raywenderlich を確認してください。

于 2012-11-08T07:50:31.407 に答える