2012-01-29 11 views
1

メインビューにはUISliderがあります。サブビューからのメインビューのIBOutletの更新

gameView *myViewController = [[gameView alloc] initWithNibName:@"gameView" bundle:nil]; 
[self.view addSubview:myViewController.view]; 

サブビューは、メインビューの上に作成されます。私は使用してサブビューを追加し、メインビューから

Iが使用サブビューを削除:

[self.view removeFromSuperview]; 

メインビューが下に見えるようになります。

私は[self.view removeFromSuperview]

はそれが可能です呼び出す前に、子ビューから、メインビューにUISliderの値を更新できるようにしたいですか?

基本的には、メインビューのIBOutletをサブビューから更新する方法について一般的に質問できます。

お願いします。 多くの感謝!

答えて

0

はい、可能です。

これにはいくつかの方法があります。私がそれをする方法は次のとおりです: まず、親ビューコントローラのUISliderを他のオブジェクトがアクセスできるプロパティにします。

ParentViewController * parentVC = (ParentViewController *) savedParent; 
if(parentVC) 
{ 
    // some float value of whatever you want to set the slider value to 
    parentVC.slider.value = 0.5f; 
} 

第二に、gameViewあなたを与えるあなたは親ビューにリンクしますインスタンス変数をオブジェクトあなたがremoveFromSuperview行う前に、あなたは、単にような何かを行うことができ、その後

を(のはid savedParent;それを呼びましょう)

さらに、サブビューを追加したい場合は、View Controllerオブジェクト全体(gameView)をインスタンス化するのはなぜですか? removeFromSubview呼び出しを実行すると、ビューは削除されますが、gameViewビューコントローラは解放されません(また、メモリに紛失してクラッシュする可能性があります)。サブビューを行う場合は、サブクラスUIViewをサブクラス化します。新しいView Controllerをプッシュしたい場合は、コントローラ全体を押します(ビューに含まれているビューだけではありません)。ここで

+0

こんにちは@Michael - 他のView Controllerを使用しないようにアドバイスしてくれてありがとう。私はそれを行う方法を知らなかったので、私はこのビデオチュートリアルに従った:http://www.youtube.com/watch?v=lzMorvFTHLM&feature=related 今私はpresentModalViewControllerを使用するものをここで見つけた:http:// www .youtube.com/watch?v = 2GeazgOqKJ4 - うまくいけば、移行を行う正しい方法です。 – user885483

+0

@Michael - 私の質問に戻ってください: 1.私は自分のUISliderを他のオブジェクトからアクセスできるプロパティにする方法を教えてください。 2.私のgameViewオブジェクトにインスタンス変数を与える方法と、それを親ビューにリンクする方法(id savedParent;と呼ぼう) 非常に多くの/詳細な質問は残念です。どうもありがとう! – user885483

+0

これは機能しません。私はあなたが言ったように実装しました。私にエラーはありませんが、スライダも更新されません。何かご意見は?ありがとう。 – user885483

0

は別の方法である:

私はスライダーを表しているかわからないんだけど、あなたは両方にそのオブジェクトを渡す必要があり、この

@interface MyGameThing : NSObject 
@property (assign) CGFloat myValue; 
@end 

@implementation MyGameThing { 
    CGFloat *_value; 
} 
@synthesize myValue = _myValue; 
@end 

を表すオブジェクトを作成する必要があります(またはそれをシングルトンにしてください)。

次に、ParentViewControllerのviewWillAppearで、スライダを新しい値に設定します。

ダニエル。

(p。単にビューコントローラビューをスーパービューに追加するのではなく、presentModalViewController/dismissModalViewControllerまたはナビゲーションコントローラを使用してください)。

+0

こんにちは@dorada - 上記の私のコメントによると、非常に多くのビューコントローラを追加しないように助言をありがとう。私はちょうどビデオチュートリアルに従っていた。私は、アドバイスとしてpresentModalViewControllerを使って試してみます。乾杯! – user885483

+0

私はこれを使用しました: \t 'gameView * myViewController = [[gameView alloc] initWithNibName:@" gameView "bundle:nil]; \t \t myViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizo​​ntal; \t \t [self presentModalViewController:myViewController animated:YES]; \t \t [myViewController release]; ' 非常にうまく機能しました。私はそれが正しい方法であることを願っていますね。 – user885483