搜索模板 tvOS

Posted

技术标签:

【中文标题】搜索模板 tvOS【英文标题】:Search Template tvOS 【发布时间】:2016-06-29 09:11:42 【问题描述】:

有人知道如何在没有 TVML 的情况下使用 Objective-C 或 Swift 中的本机开发来实现 Apple tvOS 人机界面指南中的搜索模板吗?

【问题讨论】:

【参考方案1】:

所以,经过研究,我找到了解决方案:

目标 - C

如果在应用程序中是 tabBar,我从 UITabBarController 创建了一个子类,例如APTabBar 控制器。在 APTabBarController 中,在方法中

- (void)viewDidLoad

接下来我做:

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];

地点:

    故事板 - 是我的故事板 SearchResultsViewController - 是我的故事板中包含 collectionView 的控制器 UISearchController - 是一种控制器,可以找到你需要的东西 UISearchContainerViewController - 这些就像来自 tabBarController 的视图控制器 在“newTab”中 - 我添加了我需要的新创建的 viewController

但是,我发现的问题是我无法捕获搜索到的文本。为此,从 UISearchController 创建一个子类,并实现自定义

initWithViewController

就我而言,它看起来像这样:

在.h中

#import <UIKit/UIKit.h>

@interface SearchExercisesViewController : UISearchController

- (id) initWithViewController:(UIViewController *) viewController;

@end

.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

利润,现在,替换

UISearchController *searchController = [[UISearchController alloc] initWithViewController:myViewController];

SearchExercisesViewController *searchController = [[SearchExercisesViewController alloc] initWithViewController:myViewController];

全部完成。现在剩下的就是向包含集合视图的 viewController 发送数据,并实现搜索逻辑。对于发送的数据,您可以委托模式或 NSNotification。您可以在该帖子中找到如何实现它:

it possible to Pass Data with popViewControllerAnimated?

斯威夫特

在 swift 中是一样的,如何做到这一点,你可以从这些链接中找到 Apple 示例:

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

【讨论】:

【参考方案2】:

听起来你想看看UISearchController

【讨论】:

以上是关于搜索模板 tvOS的主要内容,如果未能解决你的问题,请参考以下文章

如何在 tvOS 的同一视图中显示 UISearchController?

tvOS 14.3 UISearchController:如何锁定显示

在 AVPlayerViewController tvos 视图中添加活动指示器

015-elasticsearch-搜索模板,多搜索模板,

Sprite Kit 游戏在 tvOS 9.1 和 iOS 9.2 上的 Game Over 中崩溃

更改 tvOS 上的菜单栏位置