gpt4 book ai didi

ios - dismissViewControllerAnimated 没有关闭 ViewController

转载 作者:可可西里 更新时间:2023-11-01 04:43:25 26 4
gpt4 key购买 nike

所以....我有一个 View Controller ,当我按下一个按钮时,会出现另一个 View Controller :

- (IBAction)searchButtonPressed:(id)sender {
[self presentViewController:self.controllerSearch animated:YES completion:nil];
}

2 号内部 View Controller 是一个 TableView ,当在表中选择一行时,此代码运行:

NSString *phrase = nil; // Document password (for unlocking most encrypted PDF files)

NSString *filePath2 = filePath; assert(filePath2 != nil); // Path to first PDF file

LazyPDFDocument *document = [LazyPDFDocument withDocumentFilePath:filePath2 password:phrase];

if (document != nil) // Must have a valid LazyPDFDocument object in order to proceed with things
{
LazyPDFViewController *lazyPDFViewController = [[LazyPDFViewController alloc] initWithLazyPDFDocument:document];

lazyPDFViewController.delegate = self; // Set the LazyPDFViewController delegate to self

#if (DEMO_VIEW_CONTROLLER_PUSH == TRUE)

[self.navigationController pushViewController:lazyPDFViewController animated:YES];

#else // present in a modal view controller

lazyPDFViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
lazyPDFViewController.modalPresentationStyle = UIModalPresentationFullScreen;

[self presentViewController:lazyPDFViewController animated:YES completion:NULL];

#endif // DEMO_VIEW_CONTROLLER_PUSH
}
else // Log an error so that we know that something went wrong
{
NSLog(@"%s [LazyPDFDocument withDocumentFilePath:'%@' password:'%@'] failed.", __FUNCTION__, filePath2, phrase);
}

现在我正在使用 LazyPDFKit,它带有这个委托(delegate)方法:

- (void)dismissLazyPDFViewController:(LazyPDFViewController *)viewController
{
// dismiss the modal view controller
[self dismissViewControllerAnimated:YES completion:NULL];

}

我设置了一个断点,我可以看到我的代码进入了委托(delegate)方法,但 LazyPDFViewController 并没有消失。

我尝试了以下方法:

[[[self presentingViewController] presentingViewController] dismissViewControllerAnimated:YES completion:nil];

但这让我回想起几个 View Controller 。

我错过了什么吗?

我的第一个 View Controller.h 中的附加代码

@property (strong, nonatomic) UISearchController *controllerSearch;

在第一个 View Controller .m

- (UISearchController *)controller {

if (!_controllerSearch) {

// instantiate search results table view
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
LHFileBrowserSearch *resultsController = [storyboard instantiateViewControllerWithIdentifier:@"SearchResults"];

// create search controller
_controllerSearch = [[UISearchController alloc]initWithSearchResultsController:resultsController];
_controllerSearch.searchResultsUpdater = self;

// optional: set the search controller delegate
_controllerSearch.delegate = self;

}
return _controllerSearch;
}

最佳答案

如果你正在推送 View Controller :

[self.navigationController pushViewController:lazyPDFViewController animated:YES];

那么委托(delegate)中的代码就没有意义了,因为它假设它是一个需要被关闭的模态视图 Controller :

- (void)dismissLazyPDFViewController:(LazyPDFViewController *)viewController
{
// dismiss the modal view controller
[self dismissViewControllerAnimated:YES completion:NULL];

}

但您已将其添加到导航堆栈(我假设)。

如果此时您无法从导航 Controller 再次弹出它,则您的示例中缺少一些代码。

您确定您的委托(delegate)在主线程上触发吗?尝试:

- (void)dismissLazyPDFViewController:(LazyPDFViewController *)viewController
{
dispatch_async(dispatch_get_main_queue(), ^{
[self.navigationController popViewControllerAnimated:YES];
});
}

关于ios - dismissViewControllerAnimated 没有关闭 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36291525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com