2010-10-15 81 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