0

ビューコントローラーの1つで、次のように宣言されたプロパティがあります。

@property (非アトミック、保持) MPMusicPlayerController *musicPlayer;

他のView Controllerからこのプロパティにアクセスするにはどうすればよいですか? プログラムでビューをロードするのではなく、ストーリーボードを使用していることに注意してください。

私はこれに少し慣れていません..ありがとう。

詳細

私のルート ビュー コントローラーには、プロパティを含む TableViewController が埋め込まれています。次に、ルート ビュー コントローラーからプッシュされる別のビュー コントローラーがあります。このビューが押されたときに [musicPlayer play] を呼び出したいのですが、今のところ musicPlayer が認識されません。

4

3 に答える 3

1

1 つの方法は、View Controller を他の View Controller に #import し、その方法でプロパティにアクセスすることです。prepareForSegue:ストーリーボードの場合、親ビューと子ビューの間でコントローラーのメソッドを使用できます。子ビューで次のようなものを試してくださいchildView *child = (childView *)segue.destinationViewController;

于 2013-01-08T00:02:50.887 に答える
1

他のコントローラから musicPlayer プロパティを使用してビュー コントローラへの参照を取得する必要があります。これを取得する方法は、2 つのコントローラーの関係によって異なります。一方が他方を提示していますか?一方が他方にプッシュしますか?一方は他方の子供ですか?これらの異なる関係には、他のコントローラーにアクセスするための異なる方法が必要です。より完全に回答するには、アプリの構造に関する詳細情報を提供する必要があります。

編集後:

提示されたView Controllerに情報を渡すことができるように、prepareForSegueを実装します。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    TriggerViewController *dvc = (TriggerViewController *)segue.destinationViewController;
    dvc.tableViewReference = segue.sourceViewController.childViewControllers[0]
}

ここで、tableViewReference は、musicPlayer にアクセスしようとしているコントローラーのプロパティです (tableViewReference は、TriggerViewController クラスである必要があります)。次に、そのクラスで次のように play を呼び出すことができます:

[tableViewReference.musicPlayer プレイ];

于 2013-01-08T00:07:50.393 に答える
0

次に、ルート ビュー コントローラーから musicPlayer プロパティにアクセスする必要はありませんが、テーブル ビュー コントローラーからアクセスします。したがって、次のようになります。

[rootViewController.containerView.tableViewController.musicPlayer play];
于 2013-01-08T00:41:21.020 に答える