0

4つのタブが入ったタブコントローラーがあります。2番目のタブでは、データを入力し、そのデータをplistに保存しています。4番目のタブでは、plistを読み返して、辞書項目(会社名)の1つの配列を作成し、それらをテーブルに表示しています。私はviewDidLoadメソッドでこれを行っています。

これは、既存のデータに対しては正常に機能します。ただし、2番目のタブでデータを追加してから4番目のタブに移動すると、テーブルでデータをリロードする方法がわかりません...viewDidAppearメソッドで[tablereloadData]を試しましたが、運がありません。また、データをリロードするためのボタンを用意しようとしましたが、何もしませんでした。

誰かが私をこれについて正しい方向に向けることができますか?

ここにいくつかのコードがあります:

AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

//We need to implement the view controllers within the tab controller and make the tab controller the root controller of our app - note we are only using view 1-4 at first.

FirstViewController *fistView = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
ThirdViewController *thirdView = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
FourthViewController *fourthView = [[FourthViewController alloc] initWithNibName:@"FourthViewController" bundle:nil];

NSArray *viewControllersArray = [[NSArray alloc] initWithObjects:fistView, secondView, thirdView, fourthView, nil];

self.tabController = [[UITabBarController alloc] init];
[self.tabController setViewControllers:viewControllersArray animated:YES];

self.window.rootViewController = self.tabController;

//end custom code

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}

私のFourthViewController.hで:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {

    //add our own image to the tab bar
    self.title = @"Results";
    self.tabBarItem.image = [UIImage imageNamed:@"btnResults.png"];
}
return self;

}


- (void)viewDidLoad {
    [super viewDidLoad];

    newFileManager = [FileManager new];

    NSMutableDictionary* surveyResults = [newFileManager readPlist];

    NSMutableArray* tempArray = [[NSMutableArray alloc] init];

    for(NSString* thisCompanyName in surveyResults) { 

    [tempArray addObject:thisCompanyName];
}

companyNames = [[NSArray alloc] initWithArray:tempArray];
NSArray* sortedCompanyNames = [companyNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

self.companyNamesTable = sortedCompanyNames;

}
4

1 に答える 1

0

確実にするためにさらにコードを投稿する必要がありますが、毎回4番目のタブを初期化するわけではないと思います。あなたのコードがこのようなものであることを意味します。

init {[tab4init]}

callview {[pushViewtab4]}

まるであなたがしたかのように

初期化{ }

callview {[tab4 init] [pushViewtab4]}

(つまり、使用するまで4tabを初期化しないでください)

事前のクエリ結果なしで、plistを新鮮にクエリする必要があります

于 2012-05-15T17:40:14.440 に答える