在UITableViewCell中按下UIButton后重新加载UITableView

时间:2014-10-15 20:27:22

标签: ios objective-c uitableview uibutton

我在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

NSURLConnectionTableView重新加载之前未完成,因此无法显示任何内容。我已将[self.tableview reloadData];放在connectionDidFinishLoading的函数中,现在按下按钮正在运行。

1 个答案:

答案 0 :(得分:1)

欢迎来到异步网络世界。按钮调用

[NSURLConnection connectionWithRequest:urlRequest delegate:self]

现在连接开始了。但它还没有结束。在委托被告知结束之前,它不会结束。因此,如果您想在连接完成任何操作时执行某些操作,请执行此操作以响应NSURLConnection委托消息。

您对reloadData调用太快了,因为连接刚刚开始 - 它还没有结束(事实上,它可能还没有开始)。这听起来像你的描述,就像有时间消灭你的数据,但还没来得及更换它!