我目前为我的应用程序编写了一个滑块(类似于 Facebook 应用程序)。滑块顶部是一个搜索框,控制搜索功能的方法也在应用程序委托中。
同样,我在一个单独的类 (SliderMenuViewController) 中有控制滑块表格视图的方法。
我正在寻找一种方法让滑块(搜索框或表格视图单元格)能够告诉 RootViewController(或当前可见的任何 viewController)推送一个新的 ViewController(在 UINavigationController 内)。
这就是我试图做的(这段代码在 AppDelegate 中):
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
NSLog(@"Searching for: \"%@\"",searchBar.text);
[searchBar resignFirstResponder];
IndexAndSearch *vc = [[IndexAndSearch alloc]initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
}
但它不起作用(它写入日志,但不推送新的 ViewController)。我还尝试向 RootViewController 发送消息,如下所示:
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
NSLog(@"Searching for: \"%@\"",searchBar.text);
[searchBar resignFirstResponder];
RootViewController *vc = [[RootViewController alloc]initWithNibName:nil bundle:nil];
[vc performSearchFromDelegateSlider];
}
在 RootViewController 的实现文件中使用以下代码:
-(void)performSearchFromDelegateSlider{
NSLog(@"Searching");
IndexAndSearch *vc = [[IndexAndSearch alloc]initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
}
但又一次,它只写入日志,而不是推送 viewController。
我在 Google 和 SO 上看了很多遍,但找不到任何有用的东西。这个问题与我的类似,但没有任何合适的答案。我知道答案可能涉及委派,但我无法解决这个问题。
重要提示:应用程序中几乎每个 ViewController 都可以使用此滑块,这意味着无论我实施什么解决方案,都必须能够为每个类推送一个新的 ViewController。这就是为什么我不能使用这样的解决方案(我必须将 NavigationDelegate 代码输入到每个 ViewController 中,这在我这样大的应用程序中不起作用)。
提前感谢您的帮助。