2010-10-15 78 views
0

我有一個UITableView,它使用JSON從AppDelegate獲取新數據。它保存數據,然後從AppDelegate.data3中拉入到這個tableview類中,當我向mysql數據庫添加記錄後,啓動刷新數據的Delegate方法。Tableview使用刷新數據選擇子項後刷新到父視圖

但是,[self.tableview reLoadData];打破錶格的向下鑽取能力,如果我選擇該行,它會將子視圖按壓一秒,並用父行刷新屏幕。如果我拿出[self.tableview reLoadData];父母推送給孩子,但我沒有獲得新數據的刷新屏幕。

任何想法?

-(void) loadData3;{ 

    //Initialize table data source 
    MyAppDelegate *AppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    self.tableDataSource3 = [AppDelegate.data3 objectForKey:@"Rows"]; 

} 
    - (void)viewDidLoad { 
    [super viewDidLoad]; 
    if(CurrentLevel3 == 0) { 
     self.navigationItem.title = @"Parent Table"; 
    } 
    else 
     self.navigationItem.title = CurrentTitle3; 
    } 
} 
- (void)viewDidAppear:(BOOL)animated { 
     [self loadData3]; 
     [self.tableview reloadData]; 
      [super viewDidAppear:animated]; 
     } 
+1

可能會在[self loadData3]之前嘗試調用[super viewDidAppear:animated] – Intentss 2010-10-15 17:26:01

+0

我不知道這是否能解決任何問題,但我一直在使用'viewWillAppear:'而不是'viewDidAppear:'來處理這種事情。 – Nimrod 2010-10-15 17:29:44

+0

@奔,沒有工作 – 2010-10-15 18:54:02

回答

0

有幾個問題。目前還不清楚你想要做什麼。

您設置self.tableDataSource3到tempArray,然後將其設置爲[AppDelegate.data3 ....];

爲什麼?

 NSArray *tempArray = [[NSArray alloc] init]; 
    self.tableDataSource3 = tempArray; 
     [tempArray release]; 
    MyAppDelegate *AppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    self.tableDataSource3 = [AppDelegate.data3 objectForKey:@"Rows"]; 

On Startup [self loadData3]被調用兩次。一旦在viewDidLoad和viewDidAppear中。不必要。應該只是在viewWillAppear。

你要麼不保存您要添加或不正確取回數據。可能必須通過你的代碼來看看你是否得到了你應該得到的數據。

+0

好吧,我看到了陣列冗餘。我擺脫了這一點。數據正在通過和更新,我添加的項目在添加到mysql服務器後會出現在tableview中,並且它會返回到應用程序並保存。問題是[self.tableview reloaddata]打破了向下鑽取過程並重新加載父視圖。 – 2010-10-15 18:35:07

+0

[self.tableView reloadData]不會破壞任何東西。它所做的就是調用UITableViews委託方法UITableView cellForRowAtIndexPath。如果父視圖得到重載,那是因爲UITableView的數據源沒有被改變。意思是,你加載UITableView的數組沒有改變,或者是空的。您需要關注用於在cellForRowAtIndexPath中加載UITableView的數組,並遍歷這些值以查看數據是否是您需要的數據。 – Jordan 2010-10-15 18:57:33

+0

我剛剛添加了一個coule日誌來仔細檢查self.tabledatasource3(它是和正在更新),在這個過程中我注意到,如果我正在更新數據或重新啓動應用程序,如果[self tableview .reloadData]在裏面,鑽取不起作用。 – 2010-10-15 19:13:36