2012-02-20 6 views
0

uitableview内にuitableviewがある場合(トップレベルのテーブルビューのセルはテーブルビューですが、それは気にしないでください)、タブバーのタブでユーザーが行を選択します。私のappdelegateから、タブバーのタブappdelegateからuitablviews選択したアイテムにアクセスするには?

主な質問は、あなたのビューheirachryのどこかに深いところにvarがある場合、どのようにタブバーのビューコントローラまたはappdelegateがそれを保持することができますか?

答えて

1

私は通常、そのような変数を保持するために特定のクラスを使用します。ソースは次のようになります。

static UIView *__someView = nil; 
@implementation VariableContainer 
+ (void)setSomeView:(UIView *)someView { 
    __someView = someView; 
} 
+ (UIView *)someView { 
    return __someView; 
}  
@end 

あなたはあなただけ呼び出すいくつかの遠くの物体からアクセスしたいいくつかのオブジェクトを作成すると、[VariableContainer setSomeView:]、あなたがそれにアクセスする必要がある[VariableContainer someView]。

これは、同じ結果を得るための多くの方法の1つに過ぎません。この1についていくつかのヒント:ヘッダーに入れ、すべてのカスタムオブジェクト(たとえば、アプリのデリゲートとして)「@classのobjectName」の

  • は唯一のソースファイル(ヘッダーがありません)
  • にこのコンテナをインポートしてみてくださいこれだけ1つのコンテナ

持っているだけで、あなたが望むようにあなたができるだけ多くのオブジェクトを置くことができる

  • 弱いリンクがあり、保持使用していない私は、これは少しのに役立ちます願っています。

  • +0

    私はこれの上半分を取得しますが、箇条書きのリストはそんなにありません。実装されている弾丸の例を挙げることはできますか?最終的な箇条書きには複数のオブジェクトがありますが、配列ではなくuview varを少し見てください – jdog

    +0

    配列が必要な場合は配列を使用してください。私が意図したのは静的UIView * __ someViewを置くことでした。静的ApplicationViewController * __ mainViewController; ...必要なものは何でも。それぞれのセッターとゲッターを作成します。 保持部分の場合、おそらくそれらのオブジェクトを保持する必要はありません。あなたが明示的にそれらをリリースしなければならない場合(あなたは忘れるでしょう) ヘッダファイルにコンテナをインポートしないでください。実際には、リンクだけを使用していないと、厄介なエラーが発生する可能性があります。 "AppNameViewController"のようなカスタムオブジェクトのリンクを渡すには、そのヘッダーをインポートする必要があります。むしろ@class AppNameViewControllerを書く –

    関連する問題