gpt4 book ai didi

ios - 如何将一个 UIStoryboard 场景与 UITableViewController 和 resultsTableViewController 与 UISearchController 一起使用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:16 25 4
gpt4 key购买 nike

在 iOS 8 中,UISearchDisplayController 被弃用,使 UISearchController 可以选择向应用程序添加搜索行为。这迫使开发人员创建一个单独的 UITableviewController 来显示搜索结果——让我们为 resultsTableViewController 调用这个 tableViewController。此线程中详细介绍了如何从 UISearchDisplayController 迁移到 UISearchController:searchDisplayController deprecated in iOS 8

在我的应用程序中,我使用了 interfacebuilder 和 Storyboard。我的 UITableViewController 是在 Storyboard中自定义的,带有自定义单元格,给了我想要的东西。但是,我希望我的 resultsTableViewController 看起来与我的 tableViewController 完全一样。

问题:有没有办法在 Storyboard中为我的tableViewControllerresultsTableViewController 使用相同的场景?如果不是,最好的解决方法是什么?这个问题在这里得到了部分回答:How to share one storyboard scene between multiple UIViewControllers ,但我还有一段路要走。

最佳答案

在 Apple 开发者论坛 tartempion 的帮助下,我终于在一个文件中管理了 UTableviewController 和 searchViewController,使我能够使用相同的 Storyboard场景来显示搜索结果。

@interface TableViewController () <UISearchBarDelegate, UISearchControllerDelegate, UISearchResultsUpdating>
{
UISearchController *_searchcontroller;

NSArray * myArray;
NSArray * myDisplayedArray;
}
@end

@implementation TableViewController

- (void)viewDidLoad
{
[super viewDidLoad];

[...]

_searchcontroller=[[UISearchController alloc]initWithSearchResultsController:nil];
_searchcontroller.searchResultsUpdater =self;
_searchcontroller.dimsBackgroundDuringPresentation=NO;

myDisplayedArray=myArray;
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [myDisplayedArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

MyClass*myInstance =[myDisplayedArray objectAtIndex:[indexPath row]];

//and however you want to configure cells...

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

//whatever you need...
//and to get rid of the searchcontroller when you move to the UIView that is connected
self.searchcontroller.active=NO;
//or
[self.searchcontroller dismissViewControllerAnimated:NO completion:nil];

}

#pragma mark -

- (void)updateSearchResultsForSearchController:(UISearchController *)inSearchController
{
if (_searchController==inSearchController)
{
NSString *tSearchText = inSearchController.searchBar.text;

if ([tSearchText length]==0)
{
myDisplayedArray=myArray;
}
else
{
myDisplayedArray=[myArray filteredWithPattern:tSearchText];
}

[self.tableView reloadData];
}
}

@end

关于ios - 如何将一个 UIStoryboard 场景与 UITableViewController 和 resultsTableViewController 与 UISearchController 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27742591/

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