2016-06-29 5 views
3

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

3

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:

  1. Storyboard - mein Storyboard ist
  2. SearchResultsViewController - mein Controller von Storyboard ist die Kollektion enthält
  3. UISearchController - ist Controller, die zulassen Sie benötigen
  4. UISearchContainerViewController zu finden, was zu tun - und diese ist wie ein View-Controller von TabBarController
  5. 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:

https://github.com/brunogb/TVExamples/tree/master/UIKitCatalogtvOSCreatingandCustomizingUIKitControls