searchbar」カテゴリーアーカイブ

searchcontroller(swift4)

平成30年3月23日(金曜日)

以下リンク参考OK!!
但し、UISearchResultsUpdating デリゲート追加と同時に以下も追加(追加するまでerror!!)
func updateSearchResults(for searchController: UISearchController) {}

①テーブル
tableView.tableHeaderView = searchController.searchBar
②コレクション
collectionView.addSubview(searchController.searchBar)
③ナビゲーションバー
navigationItem.searchController = searchController
又は、
self.navigationItem.titleView = searchController.searchBar

[iOS 11] iOS 11で追加されたUINavigationItemのsearchControllerプロパティを使ってSearchBarをナビゲーションインターフェースに統合する

【Swift3】UITableViewで使う、シンプルな検索バーのサンプル2選

Storyboard を使わず UICollectionView に UISearchBar を追加したメモ

objective-c searchResultsController tableView

平成30年3月7日(水曜日)

tableViewの高さ設定


    ((UITableViewController *)self.searchController.searchResultsController).tableView.rowHeight = 66.0;

その他、searchからの戻りとして、以下

//----------------------------------------------------------------------------
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
    self.fetchedResultsController = nil;
    //[NSFetchedResultsController deleteCacheWithName:@"Master"];
    [self.tableView endUpdates];
    //[self.tableView reloadData];
}
//----------------------------------------------------------------------------

SearchBAR

平成26年10月13日
——————————–
hファイル
@property Boolean IsSearchTable;
——————————–
mファイル
if (IsSearchTable==YES) {
//on_off.enabled = NO;
on_off.hidden = YES;
}
——————————–

//—————————————————————————-
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@”showDetail”]) {
if(sender == self.searchDisplayController.searchResultsTableView) {
// サーチビュー
//[[segue destinationViewController] setIsSearchTable:YES];
}
else {
// ノーマルビュー
//[[segue destinationViewController] setIsSearchTable:NO];
}
}
}
//=============================================================================

サーチバーで使用するテーブルの高さ

平成26年10月8日(水曜日)
[objc]
//—サーチバーで使用するテーブルの高さ—
//—————————————————————————————-
– (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView
{
tableView.rowHeight = 80.0f; // or some other height
}
//—————————————————————————————-
[/objc]

SearchBar

平成26年9月24日

詳細画面(テーブル版)では、以前投稿したオブジェクトの変更によるエラーの発生無し。

SearchBar

SearchBarの遷移先でObjectを変更すると、エラーになる件。
ERROR
2014-09-07 13:05:38.832 BeppuSpa88[13043:60b] mainview coredata exist don’t anything!!
2014-09-07 13:05:46.250 BeppuSpa88[13043:60b] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2935.137/UITableView.m:1352
2014-09-07 13:05:46.262 BeppuSpa88[13043:60b] CoreData: error: Serious application error. An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:. Invalid update: invalid number of sections. The number of sections contained in the table view after the update (2) must be equal to the number of sections contained in the table view before the update (11), plus or minus the number of sections inserted or deleted (0 inserted, 0 deleted). with userInfo (null)

[objc]
//
@property Boolean IsSearchTable;
//
[/objc]

[objc]
//
@synthesize IsSearchTable;
//
[/objc]

NORMAL VIEW か SEARCHBARか確認した上で処理することで対応。

[objc]
//
//—————————————————————————-
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
if(sender == self.searchDisplayController.searchResultsTableView) {
// サーチビュー
NSIndexPath *indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
[[segue destinationViewController] setDetailItem:object];

//SearchBarの遷移先でObjectを変更すると、エラーになる件についての対策
[[segue destinationViewController] setIsSearchTable:YES];
}
else {
// ノーマルビュー
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
[[segue destinationViewController] setDetailItem:object];

//SearchBarの遷移先でObjectを変更すると、エラーになる件についての対策
[[segue destinationViewController] setIsSearchTable:NO];
}
} else if ([[segue identifier] isEqualToString:@"showflip"]) {
[[segue destinationViewController] setDelegate:self];

// 現在のFetche_predicate_strをflipviewに通知。
[[segue destinationViewController] setFlipout_str:Fetche_predicate_str];
}
}
//—————————————————————————-
//
[/objc]

[objc]
//
//動作確認用
NSLog(@"IsSearchTable = %hhu",IsSearchTable);
//self.title=[NSString stringWithFormat:@"%@",[[_detailItem valueForKey:@"name"] description]];
//温泉入湯チェックボタン追加 of_off
//SearchBarにより遷移するとERROR発生。さて…とりあえずコメントアウト次なる手を。。。
//次の一手
if (IsSearchTable == NO) {
[_detailItem setValue:[NSNumber numberWithBool:YES] forKey:@"on_off"];
}
//—————————–
//
[/objc]

searchbar

平成26年9月4日
階層
スクリーンショット 2014-09-04 1.17.31 PM

search Barを使用する場合の措置について

[objc]
– (TableViewCustomCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

// 重要 Search Barを使用する場合は、self.をtableViewの頭にいれる。
//TableViewCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier ];
TableViewCustomCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier ];
//
//
}
[/objc]