我正在尝试从其他类重新加载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说的东西。
答案 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没有任何数据。