Jeder weiß, wie man Suchvorlage wie in Apple tvOS Human Interface Guidelines implementiert, mit nativer Entwicklung in Objective-C oder Swift, ohne TVML?Suchvorlage tvOS
Antwort
also nach dem 1. Tag der Forschung fand ich Lösung:
Objective - C
Wenn in Anwendung ist tabBar, i eine Unterklasse von UITabBarController erstellt z.B. APTabBarController. In APTabBarController, in Verfahren
- (void)viewDidLoad
ich als nächstes tun:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
SearchResultsViewController *myViewController = [storyboard instantiateViewControllerWithIdentifier:@"SearchResultsViewController"];
UISearchController *searchController = [[UISearchController alloc] initWithViewController:myViewController];
UISearchContainerViewController *containerVC = [[UISearchContainerViewController alloc] initWithSearchController: searchController];
containerVC.title = @"Search";
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: containerVC];
NSMutableArray *newTab = [self.viewControllers mutableCopy];
[newTab addObject: navigationController];
[self setViewControllers: newTab];
Wo:
- Storyboard - mein Storyboard ist
- SearchResultsViewController - mein Controller von Storyboard ist die Kollektion enthält
- UISearchController - ist Controller, die zulassen Sie benötigen
- UISearchContainerViewController zu finden, was zu tun - und diese ist wie ein View-Controller von TabBarController
- In "newtab" - ich hinzufügen frisch Viewcontroller erstellt, i
brauchen aber Problem, das ich gefunden ist dass ich gesuchten Text nicht fangen kann. Dazu eine Unterklasse von UISearchController, erstellen und benutzerdefinierten
initWithViewController
In meinem Fall implementieren sieht es aus wie diese:
In .h
#import <UIKit/UIKit.h>
@interface SearchExercisesViewController : UISearchController
- (id) initWithViewController:(UIViewController *) viewController;
@end
In .m
#import "SearchExercisesViewController.h"
@interface SearchExercisesViewController() <UISearchBarDelegate>
@property (nonatomic, strong) UIViewController *viewController;
@end
@implementation SearchExercisesViewController
- (id) initWithViewController:(UIViewController *) viewController {
self = [super initWithSearchResultsController:viewController];
if (self) {
self.viewController = viewController;
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.searchBar.delegate = self;
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
NSLog(@"%@",searchText);
}
@end
Profit, und jetzt, ersetzen
UISearchController *searchController = [[UISearchController alloc] initWithViewController:myViewController];
mit
SearchExercisesViewController *searchController = [[SearchExercisesViewController alloc] initWithViewController:myViewController];
Alles erledigt. Nun müssen nur noch Daten an viewController gesendet werden, die die Sammlungsansicht enthalten, und die Logik für die Suche implementiert werden. Für gesendete Daten können Sie das Muster delegieren oder NSNotifikation.Sie können feststellen, wie das in diesem Beitrag zu implementieren:
it possible to Pass Data with popViewControllerAnimated?
Swift
In swift ist das gleiche, wie das zu tun, Sie auf Apple-Beispiel aus diesem Link zu finden:
Klingt wie Sie bei UISearchController
suchen.