0

iPhoneアプリ開発初心者です。

私はiPadアプリケーションを開発しています。上部にメニューバーがあり、クリックするとサブビューが取得されます。サブビューは UIPickerView で構成されます。UIPickerView から行を選択すると、別の UIViewController に移動します。

UIPickerView メソッドは別のクラスに記述されています (この機能はアプリ全体にあるため、一般的なものにしました)。そう、

[self.navigationController pushViewController:controller animated:YES];

私にはうまくいきません!

プッシュするクラスの名前を取得できました(選択によって変わります)。それを行う方法はありますか?

前もって感謝します :-)

4

2 に答える 2

3

あなたが本当に望んでいるのは、クラス名からオブジェクトを作成することだと思います

簡単な答えは

[[NSClassFromString(className) alloc] init...]

より完全な回答については、Objective-C のクラス名の NSString からオブジェクトを作成するをご覧ください。

于 2012-07-06T11:33:59.583 に答える
1

デリゲート メソッド (デリゲート メソッドによりオブジェクト間の通信が可能) を使用して、このシナリオを実装できます。

たとえば、UIPicker(.h) クラスで、次のようにデリゲート プロトコルを定義します。

@protocol pickerProtocol;

@interface MyPicker : NSObject {

    id <pickerProtocol> pickerDelegate;
}
@property(nonatomic,retain) id <pickerProtocol> pickerDelegate;

@end

@protocol pickerProtocol

- (void) pushViewController;
@end

そして、UIPickerView から行を選択するときに、このデリゲート メソッドを呼び出します

[pickerDelegate pushViewController];

次に、ピッカーを使用するすべてのビュー コントローラーで、デリゲート メソッドの実装を記述します。

- (void) pushViewController {
     [self.navigationController pushViewController:controller animated:YES]; 
}

次のようにデリゲートを設定しないでください

MyPicker *picker = [MyPicker alloc]init];
picker.pickerDelegate = self;
于 2012-07-06T11:58:23.893 に答える