我有一个TableViewController,一个SearchResultsController和一个WebViewController.当我单击TableViewController中的一个单元格时,它会推动WebViewController打开一个与单元格相关的URL.
TableViewController有一个UISearchController,它将结果过滤到SearchResultsController中,但是当在SearchResultsController中单击一个单元格时,WebViewController不会被推送.
以下是SearchResultsController的didSelectRowAtIndexPath的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
WebViewController *webViewController = [[WebViewController alloc] init];
NSString *extensionURL = (self.searchResults[indexPath.row])[@"url"];
NSURL *baseURL = [NSURL URLWithString:@"http://www.baseurl.com"];
NSURL *URL = [NSURL URLWithString:extensionURL relativeToURL:baseURL];
webViewController.title = (self.searchResults[indexPath.row])[@"title"];
NSLog(@"%@", URL);
webViewController.URL = URL;
[self.navigationController pushViewController:webViewController
animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
我包含了NSLog,看看当单击一个单元格时是否发生了什么,它确实在控制台中显示了url.这让我觉得问题出在navigationController上.
在线查看似乎应该将UISearchController包装在UISearchContainerViewController中,然后将其放入navigationController中.我还是应用程序开发的新手,无法弄清楚如何或在何处执行此操作.
我在我的TableViewController的viewDidLoad中调用我的SearchResultsController,如下所示:
- (void)viewDidLoad
{
[super viewDidLoad];
SearchResultsViewController *controller = [[SearchResultsViewController alloc] initWithStyle:UITableViewStylePlain];
[self addObserver:controller forKeyPath:@"results" options:NSKeyValueObservingOptionNew context:nil];
self.searchController = [[UISearchController alloc] initWithSearchResultsController: controller];
self.searchController.searchResultsUpdater = self;
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.delegate = self;
self.definesPresentationContext …Run Code Online (Sandbox Code Playgroud) objective-c uinavigationcontroller pushviewcontroller ios uisearchcontroller
我有两个视图控制器。一种允许用户输入他们自己对事物的看法:
另一个是 UITableViewController,允许他们查看提交的目击事件:
我想要的是让用户能够在第二个 VC 中点击他们的视线,并使用相关详细信息填充第一个 VC。我使用以下方法为 textFields 工作:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let pvc = self.navigationController?.previousViewController() as! SubmitSightingVC
let sighting = sightingsArray[indexPath.row]
pvc.titleTextField.text = sighting["title"] as! String?
pvc.locationTextField.text = sighting["location"] as! String?
pvc.dateTextField.text = sighting["date"] as! String?
pvc.descriptionTextView.text = sighting["sightingDesc"] as! String?
let pinArray = ["1", "2", "3", "4", "5"]
let pinTextArray = ["1text", "2text", "3text", "4text", "5text"]
var pinImageArray = [#imageLiteral(resourceName: "1"), #imageLiteral(resourceName: "2"), #imageLiteral(resourceName: "3"), #imageLiteral(resourceName: "4"), #imageLiteral(resourceName: "5")]
let pinIconString = …Run Code Online (Sandbox Code Playgroud)