当前位置:  开发笔记 > IOS > 正文

dismissViewControllerAnimated仅在第二次点击TableView Row后才有效

如何解决《dismissViewControllerAnimated仅在第二次点击TableViewRow后才有效》经验,为你挑选了1个好方法。

在我的iOS App中,我使用了一个UItableViewController

...
[self presentViewController:vc animated:YES completion:nil];
...

现在我在tableview中点击一行后,我想解雇我的tableviewcontroller:

#pragma mark UITableViewDelegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self dismissViewControllerAnimated:true completion:^(void) {
        NSLog(@"dismissed");
    }];
}

现在我的问题:dismissViewControllerAnimated按预期工作,但我必须点击该行2次.我第一次点击该行没有任何反应.

到目前为止的观察:

我连续敲了一下:什么也没发生

我点了两次:TableviewController解雇,"dismissed"被记录

我点了一次,通过点击模态之外的某个地方来解散Tableview:"dismissed"被记录

似乎即使我只点击一次,完成块也将被"安排".但解雇不会发生.

有谁知道是什么导致这个问题?



1> Jörn Buitink..:

感谢par和ShahiM,我得到了解决方案:我不得不在主线程上解雇.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self performSelectorOnMainThread:@selector(dismissAndshowPdf) withObject:nil waitUntilDone:NO];
}

- (void) dismissAndshowPdf {
    [self.presentingViewController dismissViewControllerAnimated:true completion:^(void) {
         NSLog(@"dismissed");
    }];
}


这没有任何意义,因为已经在主线程上调用了`didSelectRowAtIndexPath:`.
推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有