我在UITableViewController
的动态单元格中有按钮。我已经使用下面的代码以编程方式将它们放在那里。如果我现在按一个按钮,UITableView
消失,我得到一个空白屏幕。当我返回ViewController并再次转到UITableViewController
时,一切似乎正常+ URLConnection
完成了它的工作。我的代码出了什么问题?
UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(voteButton:) forControlEvents:UIControlEventTouchDown];
button.frame = CGRectMake(276, 0, 44.0, 44.0);
[cell.contentView addSubview:button];
它触发的方法是voteButton:
- (void) voteButton:(UIButton *) sender {
NSString *urlstring = [NSString stringWithFormat:@"http://www.someurl.com", (long)sender.tag];
NSString *webStringURl = [urlstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *jsonFileUrl = [NSURL URLWithString:webStringURl];
NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:jsonFileUrl];
[NSURLConnection connectionWithRequest:urlRequest delegate:self];
[self.tableView reloadData];
}
如何在按下按钮后重新加载UITableView
?
ANSWER
NSURLConnection
在TableView
重新加载之前未完成,因此无法显示任何内容。我已将[self.tableview reloadData];
放在connectionDidFinishLoading
的函数中,现在按下按钮正在运行。
答案 0 :(得分:1)
欢迎来到异步网络世界。按钮调用
[NSURLConnection connectionWithRequest:urlRequest delegate:self]
现在连接开始了。但它还没有结束。在委托被告知结束之前,它不会结束。因此,如果您想在连接完成任何操作时执行某些操作,请执行此操作以响应NSURLConnection委托消息。
您对reloadData
的调用太快了,因为连接刚刚开始 - 它还没有结束(事实上,它可能还没有开始)。这听起来像你的描述,就像有时间消灭你的数据,但还没来得及更换它!