iOS-两个TableView传值延迟问题

        今天在写一个关于查询个人信息的跳转界面,点击第一个TableView的cell,跳转到下一个TableView,可以显示该人物的详细信息,做完了发现,有一个传值延迟。只有返回到tableview1再点击cell,才会显示正确的信息。仔细想了想,找到了解决方法。(可能不官方,只是能解决自己当下的需求,或许有更好的方法)

用segue进行传值

        在点击了cell之后,会先调用-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender 方法,此时自己定义的self.xm等对象是空的。

iOS-两个TableView传值延迟问题_第1张图片

    但是,在调用-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender 方法之后,会接着调用另一个方法---(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath


iOS-两个TableView传值延迟问题_第2张图片

        这个方法会获取到你点击cell的那个值,然后将相应的值再赋值给self.xm等,但是这个赋值方法是在传值之后调用的,所以第一次tableview只拿到了空值,没有拿到正确的值,则第一次显示出错,你只有在第二次显示的时候,才可以获取到上一次存在self.xm中正确的值。

        这样每次,获取的值都会有一个延迟,如何解决这个问题呢?我的办法是在传值方法中,直接调用赋值方法,不等系统自己调用。

想法虽然简单,但是调用赋值方法需要获取到indexPath,也就是让系统知道你点的是那个cell。在获取路径的过程中,我想了很久。最后通过如下方法,获取到了路径。

iOS-两个TableView传值延迟问题_第3张图片

        smallTableView是tableView1中的表单;inforTV是tableView2的实例。

iOS-两个TableView传值延迟问题_第4张图片

        这样既可以解决传值的延迟问题了。

PS:(目前就是这种解决方法,还有就是可以在tableView2中根据tableView1传来的数据,在进行一次访问,但这样同样的数据访问了两次,影响效率 ----------- 或许有更好的方法,求指教)

你可能感兴趣的:(iOS-两个TableView传值延迟问题)