0

我正在尝试从不同的类重新加载 tableView。在控制台中进行一些 NSLogs 之后,我的数据正在更改但没有更改。下面是一些代码:

第二视图控制器.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];

你能帮我解决可能存在的最简单的问题之一吗?

谢谢,库尔顿

EDIT#1: NSLogs 显示以下内容。这有什么关系吗? __NSAutoreleaseNoPool(): Object 0x5883000 of class UITableView autoreleased with no pool in place - just leaking

编辑#2:向 SecondViewController.m 添加了更多代码

编辑#3:由于某种原因它不起作用。

第二视图控制器.m

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

根视图控制器.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 两次。我想像的两倍太多了。您需要找到对您的视图控制器的引用并将该项目添加到它的 listOfItems 中。然后调用reloadData该控制器的 UITableView。

于 2011-03-07T21:15:14.553 回答
1

问题是why?what do you really want to do?

您的代码没有多大意义,您正在创建 RootViewController 的新实例,并且在 tableView 向您显示一些数据之前调用 reloadData。在 tableview 有数据之前无需重新加载。但我认为您想引用旧实例而不是刚刚创建的新实例

如果这是我认为的,一个基于导航的项目,在其中创建 SecondView tableView:didSelectRowAtIndexPath:,然后推送到导航控制器,你应该尝试[self.tableView reloadData];调用- (void)viewWillAppear:(BOOL)animatedRootViewController

但我只是猜测(虽然我很擅长这个),因为你的代码没有意义。这个阶段不需要重新加载tableview,因为tableview没有任何数据。

于 2011-03-07T21:25:24.763 回答