2

IPhone私が作っているアプリには、initialViewController

(1)ボタン付き。ボタンをクリックすると、別のView Controllerにセグエします

(2)、その時点でCoreDataファイルからデータをロードし、それをユーザーに表示します。

私の問題は、(2) の読み込みとデータの実際の表示の間にわずかな遅延があることです。これはもちろん、データのロードに少し時間がかかるためです。私はそれをやっていますasynchronously.私の目標は、糸車や読み込み画面を表示しないことです(よりユーザーフレンドリーです)。

私がやりたいことはpreload、(2) ではなく (1) のデータを " " することです。そうすれば、データは (2) が読み込まれるまでに読み込まれ、すぐに表示されるはずです。(1) でデータをロードする方法は知っていますが、 (2) に簡単に渡す方法がわかりません。私のアプリは実際には上記の説明よりも少し複雑で、セグエ経由で行うのは面倒なので、セグエではできません。

「 」を使用できると聞いたことがありますがAppDelegate、プログラミングは初めてなので、効果的な使用方法がわかりません。私がフォローしているオンラインクラスでは、その使用方法について明確な洞察が得られないため、少し迷っています.

4

4 に答える 4

1

Paras の投稿に対するあなたのコメントを見て、より良い解決策があります。

fileLoader という名前の NSObject のサブクラスを作成します。

//in fileLoader.h
@interface fileLoader : NSObject {
}
+(fileLoader *)sharedInstance;
+(void)createSharedInstance;
//add functions and variables to load, store data for use in another class
@end

それで、

//in fileLoader.m
@implementation fileLoader
static id _instance;


+(void)createSharedInstance{
    _instance = [[fileManager alloc] init];
}
+(fileManager *)sharedInstance{
    return _instance;
}
//other functions for storing, retrieving, loading, standard init function, etc.

@end これ[fileManager createSharedInstance]で、 の関数を呼び出すことで、どこからでも使用できるファイル マネージャーをインスタンス化するために呼び出すことができます[fileManager sharedInstance]

于 2012-11-09T12:28:50.677 に答える
0

AppDelegate は、(2) から (1) にデータを渡すのにより適しています。(1) から (2) にデータをロードする場合、(1) は (2) を viewController のインスタンスと見なすため、(2) にロードするために使用するのと同じ関数を使用できます。それは単にこのようなものです:

//In OneViewController.m
-(void)viewDidLoad:(BOOL)animated{
    [super viewDidLoad:animated];

    TwoViewController *VCTwo = [[TwoViewController alloc] initWithNibName:@"TwoViewController" bundle:nil];
    //note that I am only instantiating VCTwo, I am not displaying it.
}

-(void)loadVCTwoFromVCOne{
    [TwoViewController preloadInformation];
    //simply call the function to load the data on the instance of the viewController before displaying it
}

-(IBAction)presentVCTwo{
    [self presentViewController:VCTwo animated:YES completion:nil];
    //when you are ready, you can display at any time
}
于 2012-11-09T12:15:42.983 に答える