如何从 Appdelegate 方法 applicationWillEnterForeground 重置 UISearch
Posted
技术标签:
【中文标题】如何从 Appdelegate 方法 applicationWillEnterForeground 重置 UISearch【英文标题】:How to reset UISearch from Appdelegate method applicationWillEnterForeground 【发布时间】:2012-07-30 12:09:02 【问题描述】:我想在应用进入后台或再次进入前台时重置我的 UISearch。隐藏 UISearch 的 tableview 就足够了。
但是当我尝试从 AppDelegate.m 中隐藏它时,它不起作用。我还记录了 UIElements,还有 (null)。
这是我尝试访问它的方式:
- (void)applicationWillEnterForeground:(UIApplication *)application
XLog(@"");
/*
Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
*/
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
XLog(@"");
searchViewController = [[SearchViewController alloc] initWithNibName:@"SearchViewController_iPad" bundle:[NSBundle mainBundle]];
else
XLog(@"");
searchViewController = [[SearchViewController alloc] initWithNibName:@"SearchViewController_iPhone" bundle:[NSBundle mainBundle]];
XLog(@"searchViewController.searchBar.text: %@", searchViewController.searchBar.text);
searchViewController.tableViewSearch.hidden = YES; // is (null)
XLog(@"searchViewController.tableViewSearch: %@", searchViewController.tableViewSearch); // is (null)
我怎样才能访问它?我这里有什么问题吗,还是不允许通过 appdelegate.m 访问其他类的元素?
【问题讨论】:
【参考方案1】:NSArray *ary_navigationControllerViews = [[NSArray alloc] initWithArray:[self.navigationController viewControllers]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.class.description == %@", [[SearchViewController class] description]];
NSArray *ary_viewController = [[NSArray alloc] initWithArray:[ary_navigationControllerViews filteredArrayUsingPredicate:predicate]];
if ([ary_viewController count] > 0)
SearchViewController *sVw = (SearchViewController*) [ary_viewController objectAtIndex:0] ;
sVw.tableViewSearch.hidden = YES;
您正在初始化视图控制器的新实例,而不是您需要获取视图控制器的现有实例并隐藏您的视图。希望这可以帮助。
【讨论】:
以上是关于如何从 Appdelegate 方法 applicationWillEnterForeground 重置 UISearch的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Appdelegate 打开 Viewcontroller?
AppDelegate.m 的“application:didFinishLaunchingWithOptions”的默认实现是不是从 iOS 6 更改为 iOS 8?
swift ios - 如何从 AppDelegate 在 ViewController 中运行函数