gpt4 book ai didi

objective-c - 搜索模板 tvOS

转载 作者:搜寻专家 更新时间:2023-10-31 22:31:52 25 4
gpt4 key购买 nike

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

最佳答案

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

目标 - C

如果在应用程序中是 tabBar,我从 UITabBarController 创建了一个子类,例如APTabBar Controller 。在 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];

地点:

  1. Storyboard - 是我的 Storyboard
  2. SearchResultsViewController - 是我的 Storyboard中包含 collectionView 的 Controller
  3. UISearchController - 是允许找到你需要的东西的 Controller
  4. UISearchContainerViewController - 这些就像来自 tabBarController 的 View Controller
  5. 在“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];

全部完成。现在只剩下将数据发送到包含 Collection View 的 viewController,并实现搜索逻辑。对于发送的数据,您可以委托(delegate)模式或 NSNotification。您可以在该帖子中找到如何实现它:

it possible to Pass Data with popViewControllerAnimated?

swift

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

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

关于objective-c - 搜索模板 tvOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38095125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com