0

別のクラスから tableView をリロードしようとしています。コンソールにいくつかの NSLog を表示した後、データが変更されていますが、変更されていません。以下はいくつかのコードです:

SecondViewController.m

RootViewController *test = [[RootViewController alloc] init];
// Set up database connection
NSString *myDB = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"flashpics.db"];
database = [[Sqlite alloc] init];
[database open:myDB];

[database executeNonQuery:@"INSERT INTO albums (id, name, connections) VALUES (?,?,'No Connections')", theID, theName];
[test.listOfItems addObject:theName];


RootViewController *controller = [[RootViewController alloc] init];
[controller.tableView reloadData];

[self dismissModalViewControllerAnimated:YES];

おそらく存在する最も簡単な質問の1つを解決するのを手伝ってくれませんか?

ありがとう、コールトン

EDIT#1: NSLogs には次のように表示されます。これは何かできるでしょうか? __NSAutoreleaseNoPool(): Object 0x5883000 of class UITableView autoreleased with no pool in place - just leaking

編集 #2: SecondViewController.m にさらにコードを追加

編集#3:何らかの理由で機能していません。

SecondViewController.m

RootViewController *controller = [[RootViewController alloc] init];
[RootViewController refreshTableView];

RootViewController.m

- (void) refreshTableView {
[self.tableView reloadData];
NSLog(@"Refreshing TableView - %@", listOfItems);
}

配列に「neato」を挿入しました。次に、SecondViewController.m の reloadTableView を RootViewController.m に呼び出しました。出力は得られましたが、tableView は更新されませんでした。以下はNSLogです。

Refreshing TableView - (
"Default Album",
"Hello.",
"This is cool!",
hi,
neato
)

PS結果は得られませんが、NSLogを介して言うようにプログラムしたものは得られます。

4

2 に答える 2

1

RootViewControllerを2回初期化します。私が想像する2倍多すぎます。ビューコントローラへの参照を見つけて、そのアイテムをそのlistOfItemsに追加する必要があります。reloadData次に、そのコントローラーのUITableViewを呼び出します。

于 2011-03-07T21:15:14.553 に答える
1

問題はwhy?、またはwhat do you really want to do?

コードはあまり意味がありません。RootViewController の新しいインスタンスを作成していて、tableView がデータを表示する前に reloadData を呼び出しています。テーブルビューにデータが含まれる前にリロードする必要はありません。しかし、作成したばかりの新しいインスタンスではなく、古いインスタンスを参照したいと思います

これが私が思うものであれば、SecondView が で作成され、次に RootViewController の呼び出しを試みる必要があるナビゲーション コントローラーにプッシュされるナビゲーション ベースのプロジェクトですtableView:didSelectRowAtIndexPath:[self.tableView reloadData];- (void)viewWillAppear:(BOOL)animated

しかし、あなたのコードは意味をなさないので、私は推測しています (私はこれがかなり得意ですが)。テーブルビューにはデータがないため、この段階でテーブルビューをリロードする必要はありません。

于 2011-03-07T21:25:24.763 に答える