在我的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"被记录
似乎即使我只点击一次,完成块也将被"安排".但解雇不会发生.
有谁知道是什么导致这个问题?
感谢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"); }]; }