6

次のように UISearchBar があるという要件を満たしました。

ステップ : 1 (検索バーの最初の外観)

ここに画像の説明を入力

ステップ : 2 (ユーザー タイプの文字列と即時検索)

ここに画像の説明を入力

ステップ : 3 (検索リストでそれらのいずれかを選択)

ここに画像の説明を入力

ステップ : 4 (検索バーにボタンを追加する)

ここに画像の説明を入力

ステップ : 5 (最後にボタンのアクション)

ここに画像の説明を入力

これは続くかもしれません。つまり、彼はテキストをさらに入力できますが、機能は同じでなければなりません。

誰でも私を助けてもらえますか?お願いします、私は困っています。

アップデート

これと同じ機能を iMac Finder 検索で見ることができます

これは私が試したことです。

#import "ViewController.h"
#import "customPopOverController.h"
#import <QuartzCore/QuartzCore.h>
@interface ViewController ()
@property (strong, nonatomic) UIView *searchView;
@property (strong, nonatomic) UITableView *sampleView;
@property (strong, nonatomic) NSMutableArray *arrayForListing;
@property (strong, nonatomic) UITextField *txtFieldSearch;
@end

@implementation ViewController
@synthesize searchView = _searchView;
@synthesize customPopOverController = _customPopOverController;
@synthesize txtFieldSearch = _txtFieldSearch;
@synthesize sampleView = _sampleView;
@synthesize arrayForListing = _arrayForListing;
@synthesize btnforExtra = _btnforExtra;
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.arrayForListing = [[NSMutableArray alloc]init];
    [self loadTheSearchView];
    [self applyUIStyle];
}
- (void)loadTheSearchView
{
    self.searchView = [[UIView alloc]initWithFrame:CGRectMake(20, 100, 280, 44)];
    [self.searchView setBackgroundColor:[UIColor whiteColor]];
    [self.view addSubview:self.searchView];
    [self placeTheTextView];
}
- (void)placeTheTextView
{
    self.txtFieldSearch = [[UITextField alloc]initWithFrame:CGRectMake(25, 9, 230, 30)];
    [self.txtFieldSearch setDelegate:self];
    [self.searchView addSubview:self.txtFieldSearch];
}
- (void)applyUIStyle
{
    self.searchView.layer.cornerRadius = 20.0f;
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    return YES;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{

}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if(textField.text.length!=0)
    {
        [self.arrayForListing removeAllObjects];
        [self.arrayForListing addObject:[NSString stringWithFormat:@"File Contains %@",textField.text]];

        [self callThePop];
    }
    return YES;
}
- (void)callThePop
{
    UIViewController *contentViewController = [[UIViewController alloc] init];
    contentViewController.contentSizeForViewInPopover = CGSizeMake(self.searchView.frame.size.width, 50);
    self.sampleView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, contentViewController.contentSizeForViewInPopover.width, contentViewController.contentSizeForViewInPopover.height)];
    [self.sampleView setDelegate:self];
    [self.sampleView setDataSource:self];
    [self.sampleView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLineEtched];
    [self.sampleView setBackgroundColor:[UIColor clearColor]];
    [contentViewController.view addSubview:self.sampleView];

    self.customPopOverController = [[customPopOverController alloc]initWithContentViewController:contentViewController];
    self.customPopOverController.delegate = self;

    UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(callYourMethod:)];
    swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
    [self.sampleView addGestureRecognizer:swipeRight];

    [self.customPopOverController presentPopoverFromRect:self.searchView.frame inView:self.view  permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown| UIPopoverArrowDirectionLeft|UIPopoverArrowDirectionRight) animated:YES];
}
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}
#pragma mark - Table View Delegate Methods
#pragma mark
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.arrayForListing.count;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifer = @"Cell";
    UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifer];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifer];
    }
    cell.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [cell.textLabel setTextAlignment:UITextAlignmentCenter];
    [cell.textLabel setNumberOfLines:0];
    [cell.textLabel setLineBreakMode:UILineBreakModeCharacterWrap];
    cell.textLabel.text = [self.arrayForListing objectAtIndex:indexPath.row];
    [cell.textLabel setFont:[UIFont fontWithName:@"TrebuchetMS" size:14]];
    cell.textLabel.textColor = [UIColor whiteColor];
    return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (self.customPopOverController)
    {
        [self.customPopOverController dismissPopoverAnimated:YES];
    }
    UITableViewCell * cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
    if (self.txtFieldSearch.text.length == 0)
    {
        self.txtFieldSearch.text = cell.textLabel.text;
    }
    else
    {
        self.btnforExtra = [[UIButton alloc]initWithFrame:CGRectMake(10+(buttonsCount*45), 8, 45, 25)];
        [self.btnforExtra setBackgroundColor:[UIColor colorWithRed:0.503 green:0.641 blue:0.794 alpha:1.000]];
        [self.btnforExtra setTitle:self.txtFieldSearch.text forState:UIControlStateNormal];
        [self.btnforExtra setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [self.btnforExtra.layer setCornerRadius:8.0f];
        [self.txtFieldSearch setFrame:CGRectMake(self.btnforExtra.frame.origin.x+self.btnforExtra.frame.size.width+10, 9, 230, 30)];
        self.txtFieldSearch.text = @"";
        [self.searchView addSubview:self.btnforExtra];
        buttonsCount++;
    }
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView.editing == UITableViewCellEditingStyleDelete)
    {
        [tableView beginUpdates];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
        [self.arrayForListing removeObjectAtIndex:indexPath.row];
        [tableView endUpdates];
    }
}
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"IndexPath.row == %i", indexPath.row);
}
#pragma mark - custom PopOver Delegate Methods
#pragma mark
- (BOOL)popoverControllerShouldDismissPopover:(customPopOverController *)thePopoverController
{
    return YES;
}
- (void)popoverControllerDidDismissPopover:(customPopOverController *)thePopoverController
{
    self.customPopOverController = nil;
}

@end
4

1 に答える 1