2012-04-07 8 views
0

私はxCodeを使い始めてから私はストーリーボードを使っています。今日私はxibファイルで古い方法を試してきました。前の画面からのコマンドを持たずにxibビューを切り替える

私の最初のビューには、2番目のビューにいるときにまだアクティブな加速度計コードがあります。

第2ビューコントローラが最初のビューからコードを使用する方法はありますか?

第2ビューのヘッダーファイルを最初のビューの実装ファイルにインポートしていますが、それは間違いありませんか?私がそのインポートを削除するとエラーが発生します。

// 
// ViewController.m 



#import "ViewController.h" 
#import "ViewController2.h" 

@interface ViewController() 

@end 

@implementation ViewController 



- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 

} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
} 

-(void)viewWillAppear:(BOOL)animated{ 
    [self startAccel]; 
    //[self view]; 

} 

-(void)viewWillDisappear:(BOOL)animated{ 
    [self stopAccel]; 
    //[self view]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

    { 

    return ((interfaceOrientation == UIInterfaceOrientationPortrait) || (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)); 

} 



-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{ 

    double const kThreshold = 1.7; 
// double const kThreshold = 2.0; 
    if (fabsf(acceleration.x) > kThreshold 
     || fabsf(acceleration.y) > kThreshold 
     || fabsf(acceleration.z) > kThreshold){ 


     int randomNumber = arc4random() % 3 + 1; 

     NSURL *soundURL = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:[NSString stringWithFormat:@"Sound%02d", randomNumber] ofType:@"wav"]]; 

     AVAudioPlayer * soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:nil]; 

     [soundPlayer prepareToPlay]; 
     [soundPlayer play]; 

    } 
} 


-(void)startAccel{ 
    UIAccelerometer * accel = [UIAccelerometer sharedAccelerometer]; 
    accel.delegate = self; 
    accel.updateInterval = .25; 
} 

-(void)stopAccel{ 
    UIAccelerometer * accel = [UIAccelerometer sharedAccelerometer]; 
    accel.delegate = nil; 
} 




-(IBAction)View2:(id)sender;{ 
    ViewController2 *V2 = [[ViewController2 alloc] 
               initWithNibName:@"ViewController2" 
               bundle:nil]; 

    [self.view addSubview:V2.view]; 
} 


@end 

答えて

1

二コントローラがないではない、本当に最初からのコードを使用しますが、あなたが最初のビューを表示している間、あなたがstartAccelerometerUpdatesを呼び出した場合、あなたは第二を提示しようとしているとして、それらを停止する場合がありますそれが必要ない場合は1つです。

+0

上記の元の質問にソースコードを追加しました。次のView Controllerでこの加速度計を使用するために間違っていることが分かりますか? – sdlabs

+0

ドキュメントによれば、あなたは '[super viewWillAppear:animated]'と '[super viewWillDisappear:animated] 'を呼び出すべきであるということ以外は何も飛び出さない。私はこの問題を引き起こすとは思っていませんが(確かに分かりません)。 startAccelとstopAccelにNSLog()メッセージを書き出して、私が思ったときに呼び出されていることを確認したいと思うでしょう。 –

関連する問題