2012-02-03 15 views
0

私は2つのタブとタブバーコントローラを持っている: 「txtInTab2」という名前のテキストフィールドを持つテキスト「テスト」 別のビューから1つのビューのオブジェクトにアクセスするにはどうすればよいですか?

  • tabBar2Viewと「openDifferentView」というボタンやテキストフィールド 「myvalue」と

    • tabBar1Viewを私はtabBar2Viewを示し、(tabBar2View中)txtInTab2に(tabBar1View.myvalue.textから)値 "test" を渡したいopenDifferentViewをタップ

    私は[self.tabBarController setSelectedIndex:1]を使用して表示されるビューを取得しますが、私はこのビューからどのようにテキストフィールドの値を設定できるのかよくわかりません。

    私はこれが可能だろうと思った:

    UIViewController *tab2; 
    tab2 = [self.tabBarController.viewControllers objectAtIndex:1]; 
    tab2.txtInTab2.text = "something"; //doesn't work 
    tab2.show; //don't know how to this 
    

    編集:私はすでにプロパティ/ @ tabBar2ViewでTextFieldに合成し、そしてtabBar1Viewでの#import "tabBar2View.h" @ IBOutletを追加しました。

  • 答えて

    0

    UIViewControllerには、txtInTab2というプロパティがありません。 txtInTab2は独自のUIViewControllerサブクラス(TabBar2Viewという名前)に追加したプロパティです。

    コードは基本的には正しいですが、実際にはどのタイプのビューコントローラでもtab2を定義する必要があります。あなたがこれを行う必要がありますので、下記のコメントから、それは、実際にナビゲーションコントローラです:

    :実際にそれを表示するためにその後

    #import "MyViewController.h" 
    
    UInavigationController *tab2; 
    tab2 = [self.tabBarController.viewControllers objectAtIndex:1]; 
    
    //now lets get the frontmost view controller in the navigation controller 
    //which will (hopefully) be your custom view controller class 
    TabBar2View *viewController = (TabBar2View *)tab2.topViewController; 
    
    //now before we set the label, we need to make sure that the 
    //view controller's view has actually been loaded from its nib 
    //file. calling its view property forces it to load 
    [viewController view]; 
    
    //now we can set the label 
    viewController.txtInTab2.text = @"something"; //this will work now 
    

    を、あなたはこのように、タブバーコントローラを介してこれを実行する必要があります

    [self.tabBarController setSelectedIndex:1]; //show the second tab 
    
    +0

    ああ、愚かなミスを開始する方法について良い助けを与えるだろうと思う...しかし、それはクラッシュ: [UINavigationController txtInTab2]:インスタンス0x68b4dd0 – James

    +0

    に送信された認識されていないセレクタはそれはあなたの第二のViewコントローラのように聞こえますタブは実際にあなたのビューコントローラを含むUINavigationControllerです。私は私の答えを更新しました。 –

    +0

    それは完璧に機能しました!私はそれを完全に理解しています。どうもありがとう!しかし、私はビューの間に多くのデータを渡しているのであれば、私が正しく理解すれば、それはあらかじめ決められた方法だと思います。 – James

    0

    代理人を使用する必要があります。私はthisはあなたに

    +0

    ありがとう、それを調べてみましょう。しかし、私が達成しようとしていることは、デリゲートクラスなしでは不可能だと確信していますか? – James

    +0

    いいえ、私はそれが必須ではないと言いません。私はかつてこのようなものが必要でした。私は 'NSUserDefaults' klassを使って第1クラスのデータを保存し、保存されたコンテンツを第2クラスの表示用に使用しました。これが合理的であると思われるなら、私に今すぐ連絡してください。私はあなたのためにいくつかのコードで自分の答えを編集します –

    関連する問題