2011-03-07 54 views
0

我想重新加載一個不同類的tableView。在控制檯中的一些NSLogs後,我的數據正在改變,但沒有改變。下面是一些代碼:從不同的類reloadData?

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]; 

能否請你幫我大概解決存在的最簡單的一個問題?

謝謝, 庫爾頓

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 
) 

P.S.我沒有得到結果,但我確實得到了我編程通過NSLog所說的東西。

回答

1

你初始化你的RootViewController兩次。我想象的太多了。你需要找到你的視圖控制器的引用,並將它添加到它的listOfItems。然後在該控制器的UITableView上調用reloadData

+0

現在你說 - 它不是。在哪些類中需要初始化?它應該如何?在我的 - 初始? – iosfreak 2011-03-07 21:22:24

+0

我已經留下了一堆代碼,但它確實獲取數據來填充它(從NSMutableArray)。你能提供一些簡單的示例代碼嗎?謝謝一堆! – iosfreak 2011-03-07 21:38:03

+0

我不能進入太多的細節,因爲它的很多將取決於你想要在表格中呈現什麼,但我已經包括了一個例子,我希望能讓你開始。 – Dimitry 2011-03-07 21:55:13

1

問題是why?what do you really want to do?

您的代碼並沒有太大的意義,要創建RootViewController的新實例,你調用reloadData之前的tableView已經展示了一些數據。在tableview有數據之前不需要重新加載。但我認爲你想引用舊實例而不是剛剛創建的新實例

如果這是我認爲的,那麼在基於導航的項目中,將在tableView:didSelectRowAtIndexPath:中創建SecondView,然後將其推送到navigationcontroller你應該嘗試撥打- (void)viewWillAppear:(BOOL)animated- (void)viewWillAppear:(BOOL)animated RootViewController

但我只是猜測(雖然我很擅長這個),因爲你的代碼沒有意義。在這個階段無需重新加載tableview,因爲tableview沒有任何數據。

+0

我已經遺漏了一堆代碼,以方便閱讀。這就是發生了什麼:用戶添加一個專輯後,它會做到這一點。我已經添加了一個新的字符串數組和數據庫,從不同的類創建tableView。我已經在它上面運行了NSLogs,並且它確實添加了它。但是,當我運行reloadData到特定的tableView時,它不會實現數據。事實上,它什麼都不做。 – iosfreak 2011-03-07 21:33:50

+0

在創建viewController的相同方法中調用reloadData仍然沒有什麼意義。當您將控件傳遞到另一個視圖(用戶添加相冊時),您已經離開了此方法。 ---爲了方便閱讀,你不應該忽略重要的代碼。很難弄清楚發生了什麼事情。 – 2011-03-07 21:39:35

+0

在我的問題中添加了更多的代碼給SecondViewContoller.m。 – iosfreak 2011-03-07 21:51:07