来自不同类的reloadData?

时间:2011-03-07 21:13:09

标签: xcode uitableview ios4 reloaddata

我正在尝试从其他类重新加载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: NSLog显示以下内容。可以用任何东西吗?     __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
)

P.S。我没有得到结果,但我确实得到了我编程通过NSLog说的东西。

2 个答案:

答案 0 :(得分:1)

您初始化RootViewController两次。我想象的次数太多了。您需要找到对视图控制器的引用,并将该项添加到它的listOfItems中。然后在该控制器的UITableView上调用reloadData

答案 1 :(得分:1)

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

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

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

但我只是在猜测(虽然我对此非常擅长),因为你的代码毫无意义。无需在此阶段重新加载tableview,因为tableview没有任何数据。