2011-06-22 6 views
0

私は、RootViewControllerという名前のメインコントローラーとDetailViewControllerという名前のディテールコントローラーでSplitViewControllerを使用しています。私RootViewControllerでは、私は私のインターフェイス内部タイマーを有している:ユーザーがRootViewControllerからテーブルから行を選択するNSTimerは別のView Controllerのラベルと対話できませんか?

@interface RootViewController : UITableViewController <UISplitViewControllerDelegate> { 
    UISplitViewController *splitViewController;  
    UIPopoverController *popoverController; 
    UIBarButtonItem *rootPopoverButtonItem; 

    NSTimer *counter; 
} 

、カウンタよう設定されている:

counter = [NSTimer scheduledTimerWithTimeInterval:(1.0/1.0) target:self selector:@selector(countdown) userInfo:nil repeats:YES]; 

カウントダウン方式でありますしたがって呼ば:

-(void)countdown { 
    DetailViewController *newDetailViewController = [[DetailViewController alloc]init]; 
    newDetailViewController.countdown_timer.text = @"Text Switched"; 
} 

メソッド内のコードは、ほとんど他のどこでも正常に動作し、かつラベルがカウントダウンメタに配置されてどのようなコードに関係なく変更するようではありませんod。これがDetailViewControllerのラベルに接続しない原因は何ですか?

ありがとうございます!

答えて

0

タイマーがトリガーされるたびに、DetailViewControllerの新しいインスタンスを作成するという問題があります。これはメモリリークです。第二に、それはDetailViewControllerの目に見えるインスタンスを変更していません。可視インスタンスを変更するには、プロパティまたはインスタンス変数に格納する必要があります。

私はこれが動作する完全にわからないが、あなたはこのようなあなたのcountdown方法、

-(void)countdown { 
    DetailViewController *detailViewController = [splitViewController.viewControllers objectAtIndex:1]; 
    detailViewController.countdown_timer.text = @"Text Switched"; 
} 

これは未テストで、理論的には動作するはずの定義試すことができます。これが有効な場合は、インスタンス変数を追加する必要はありません。

+0

Ah!あなたが言っていることが分かります。助けてくれてありがとう! – drfranks3

関連する問題