1

TableViewControllerセグエする がありますTabBarViewController

セグエを介してオブジェクトを渡す方法は知っていますが、TabBarViewControllerタブ共有のような関係ではありません。

これどうやってするの? TabView から TabBarViewControllers メンバー変数にアクセスする方法はありますか?

アップデート:

これは私がこれまで問題を解決した方法ですが、これを行うために AppDelegate を使用することに夢中ではありません...

に以下を追加WhateverYouNamedYourAppDelegate.h

@class myObjectIWantToPass;
@property (strong, nonatomic) myObjectIWantToPass *object;

次に、渡したいデータが含まれているView Classファイルに次を追加します。オブジェクトを別のビューに渡すことを計画している場合は、このファイルに既にオブジェクトを設定する方法を知っていると仮定します。

WhateverYouNamedYourAppDelegate *appDelegate = 
(WhateverYouNamedYourAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.object = object;

次に、同様の作業を行って、目的のビュー クラスの appDelegate からオブジェクトを取得します。

WhateverYouNamedYourAppDelegate *appDelegate = (WhateverYouNamedYourAppDelegate *)[[UIApplication sharedApplication] delegate];
object = appDelegate.object;
4

2 に答える 2

1

シングルトン クラスを作成して、すべてのコントローラーがシングルトン内のこれらの変数にアクセスできるようにすることができます。以下のコードを参照してください

SingletonClass.h

@interface SingletonClass : NSObject {
    NSString *someString;
}

@property(nonatomic, retain)NSString *someString;

+(id)shared;

@end

SingletonClass.m

#import "SingletonClass.h"

static SingletonClass *aShared;

@implementation LibShared
@synthesize someString;

+(id)shared
{
    if (aShared == nil) {
    aShared = [[self alloc] init];
    }
    return aShared;
}

-(id)init
{
   if (self = [super init]) {

   }
}

-(void)dealloc
{
  [someString releease];
  [super dealloc];
}

タブバーでは、SingletonClass に変数を設定できます。

[[SingletonClass shared] setSomeString:@"Value_Set"];

tableViewController で、SingletonClass の someString 変数のプロパティを取得できます。

NSString *string =  [[SingletonClass shared] someString];
于 2012-07-11T08:34:46.593 に答える
0

ここではシングルトンパターンは必要ありません。代わりに、通常どおりにデータオブジェクトを転送して送信できます。必要なのは、のプロパティ- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)senderで正しいviewControllerを見つけることだけです。UITabBarControllerviewControllers

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"MyTabBarSegue]) {
        UITabBarController *tabBarController = segue.destinationViewController;

        // Either set the index here, if you know for sure which viewController is which, or
        // Enumerate the viewControllers for isKindOfClass:[MYCustomViewController class] to be robust and change-proof
        MYCustomViewController *myVC = [[tabBarController viewControllers] objectAtIndex:0];
        myVC.dataObject = self.dataObject;
    }
}
于 2012-07-16T08:03:36.030 に答える