0

我在发布一些数据后尝试重新加载我的 UITableView。这是代码:

-(IBAction)carregaLista{

NSError *err = nil;
NSURLResponse *response = nil;

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];

NSString *theURL = [NSString stringWithFormat:@"http://localhost/tests/json/"];
NSURL *URL = [NSURL URLWithString:theURL];
[request setURL:URL];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setTimeoutInterval:30];

NSData *jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];

resultsDictionary = [[NSDictionary alloc] init];

resultsDictionary = [jsonData objectFromJSONData];
//NSLog(@"my dictionary = %@", resultsDictionary);


self.billsArray = [[NSArray alloc] init];
self.billsArray = [resultsDictionary objectForKey:@"bills"];

// Add values to its array

double sum = [[self.billsArray valueForKeyPath:@"@sum.value"] doubleValue];

NSString *totalString = [NSString stringWithFormat:@"%0.2f", sum];
self.total.text = totalString;

// Custom table cell

tabela.rowHeight = 100;
[self.tabela reloadData];
NSLog(@"Chamou carregaLista");

}

然后,在 AddViewController 中:

-(IBAction)enviaCadastro:(id)sender{

NSLog(@"Nome: %@, Valor: %@", self.nome.text, self.valor.text);

NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost/tests/json/add.php"]];
[request setHTTPMethod:@"POST"];

NSString *post =[[NSString alloc] initWithFormat:@"nome=%@&valor=%@", self.nome.text, self.valor.text];
[request setHTTPBody:[post dataUsingEncoding:NSUTF8StringEncoding]];

NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

float respCode = [responseString floatValue];
if(respCode < 400) {
    [self dismissModalViewControllerAnimated:YES];
    ViewController *firstView = [[ViewController alloc] init];
    [firstView carregaLista];
}
else {
    NSLog(@"NAO DEU CERTO");
}


}

我应该怎么做才能用新添加的数据重新加载表?

谢谢。

4

3 回答 3

1

这个...

ViewController *firstView = [[ViewController alloc] init];

...创建一个的视图控制器,它与您已经拥有的任何实例不同,并且不是具有在屏幕上可见的视图的实例。您可能正在更新其数据属性并期望更新出现在您的视图中。我相信你需要调用已经是你应用程序的一部分carregaListaViewController

于 2012-08-02T14:48:03.337 回答
0

想通了。carregaLista我在里面打电话viewDidLoad。只是放在里面viewWillAppear然后工作。谢谢大家。

于 2012-08-02T18:03:37.967 回答
0

我不能确定这是否是相同的情况,但我在 UIPickerView -reloadAllComponents方法上遇到了类似的问题。我注意到,如果该行离开屏幕然后回来更新它。我期望以前的方法做的那种。

我可以让它更新的方法是使用该方法删除我的 NSMutableArray 中的内容,-removeAllObjects然后立即调用-addObject:then -reloadAllComponents。我有一种感觉,你可以做类似的事情并得到你需要的结果。

于 2012-08-02T14:55:44.813 回答