gpt4 book ai didi

ios - iOS 上的 UISearchController 不调用 cellForRowAtIndexPath

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:27 26 4
gpt4 key购买 nike

在我的 Xcode 项目中,我有一个带有元素的 TableView,我添加了一个带有 Apple 的“令人惊叹的新”UISearchController 的搜索栏。它运行良好了一点,但现在没有在 UISearchController 上调用“cellForRowAtIndexPath”。结果通过,我 NSLogg'ed 计数,但单元格未配置。知道为什么会这样吗?

TableViewController.m:

    - (void)viewDidLoad {
[super viewDidLoad];



self.listTableView.tableFooterView = [[UIView alloc] init];
// Create new HomeModel object and assign it to _homeModel variable
_displayModel = [[DisplayModel alloc]init];
_displayModel.delegate = self;
[_displayModel downloadItems];
_listTableView.delegate = self;

// Set this view controller object as the delegate for the home model object
self.filteredArray = [NSMutableArray arrayWithCapacity:[self.athletes count]];

#define ENABLE_SCOPE_BUTTONS 0

// The table view controller is in a nav controller, and so the containing nav controller is the 'search results controller'
UINavigationController *searchResultsController = [[self storyboard] instantiateViewControllerWithIdentifier:@"TableSearchResultsNavController"];

self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];

self.searchController.searchResultsUpdater = self;

self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);

self.listTableView.tableHeaderView = self.searchController.searchBar;

#if ENABLE_SCOPE_BUTTONS

NSMutableArray *scopeButtonTitles = [[NSMutableArray alloc] init];
[scopeButtonTitles addObject:NSLocalizedString(@"All", @"Search display controller All button.")];

for (NSString *sport in [Athlete sportTypeNames]) {
NSString *displayName = [Product displayNameForType:deviceType];
[scopeButtonTitles addObject:displayName];
}

self.searchController.searchBar.scopeButtonTitles = scopeButtonTitles;
self.searchController.searchBar.delegate = self;

#endif

//self.searchController.searchBar.scopeButtonTitles = scopeButtonTitles;

self.searchController.searchBar.delegate = self;

self.definesPresentationContext = YES;

;

// Do any additional setup after loading the view, typically from a nib.
}

UISearchController.m

//
// SearchResultsTableViewController.m
// Sample-UISearchController
//
// Created by James Dempsey on 9/20/14.
// Copyright (c) 2014 Tapas Software. All rights reserved.
//

#import "SearchResultsTableViewController.h"
#import "DetailViewController.h"
#import "AthleteModel.h"

@implementation SearchResultsTableViewController

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.searchResults count];
}

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

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"SearchResultCell" forIndexPath:indexPath];
if (cell == nil) {
Athlete *athlete = [self.searchResults objectAtIndex:indexPath.row];

cell.textLabel.text = athlete.name;
NSLog(@"CELL Called");
}
return cell;


}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Athlete *athlete = [self.searchResults objectAtIndex:indexPath.row];
DetailViewController *vc = [[self storyboard] instantiateViewControllerWithIdentifier:@"DetailViewController"];
self.presentingViewController.navigationItem.title = @"Search";
vc.athlete = athlete;
[self.presentingViewController.navigationController pushViewController:vc animated:YES];
}

-(void)viewDidLoad{
Athlete *athlete = [self.searchResults objectAtIndex:0];
self.tableView = self.tableView;
self.tableView.frame = CGRectMake(0, 0, 320, 480);
NSLog(@"Name: %@", athlete.name);
}

@end

最佳答案

假设委托(delegate)和数据源已设置 - 有或没有搜索栏 - 像 CellforRowAtIndexPath 这样的 UITableview 方法在被这个语句触发时按顺序一个接一个地执行

     [self.myTable reloadData]; 

只是想知道如果您有 Searchbar/SearchCONtroller - 搜索逻辑在哪里

         - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar  {
// ....

[self.myTable reloadData];
}

关于ios - iOS 上的 UISearchController 不调用 cellForRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27894307/

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