代码之家  ›  专栏  ›  技术社区  ›  Nikita Patil

如何在iOS中实现像下图这样的搜索功能?

  •  0
  • Nikita Patil  · 技术社区  · 8 年前

    enter image description here

    以上图片是Gmail应用程序的示例。

    我想要的是,

    图2 -我想这样显示建议列表,当用户单击该建议时,它必须根据该搜索值导航下一个视图

    图3 A - (键入前)当我单击搜索栏按钮时,就像我想显示的这个视图一样,我也想显示分段控件,如图所示。

    图3 B - 当用户开始根据搜索值键入时,数据必须显示在表视图上。

    我不知道关于表视图及其功能的详细信息。我想学习如何在iOS中实现此功能。

    任何人都可以帮助我实现此功能。

    1 回复  |  直到 8 年前
        1
  •  2
  •   MK iOS    6 年前

    步骤1 :只需创建搜索的导航按钮

        UIButton *searchButton =  [UIButton buttonWithType:UIButtonTypeCustom];
        [searchButton setImage:[UIImage imageNamed:@"search1"] forState:UIControlStateNormal];
        [searchButton addTarget:self action:@selector(searchButtonClicked) forControlEvents:UIControlEventTouchUpInside];
        [searchButton setFrame:CGRectMake(10, 0, 35, 35)];
    
         UIView *rightBarButtonItems = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 76, 32)];
        [rightBarButtonItems addSubview:searchButton];
    
        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightBarButtonItems];
    

    第2步 :完成操作后,编写导航下一个视图的代码

    - (IBAction)searchButtonClicked {
    
       SearchViewController * search=[self.storyboard instantiateViewControllerWithIdentifier:@"SearchViewControllerId"];
       [self.navigationController pushViewController:search animated:YES];
    
        }
    

    步骤3 :获取一个文本字段和分段控件,如下面的屏幕截图,并在分段控件下面添加2个表视图,然后编写代码。 enter image description here

    // This method used to allow select segmented button multiple times (multi-select segmented control)
    
    -(void)setMultiSelectControl:(MultiSelectSegmentedControl *)multiSelectControl{
        _multiSelectControl = multiSelectControl;
        self.multiSelectControl.tag = 2;
        self.multiSelectControl.delegate = self;
    }
    
    -(void)multiSelect:(MultiSelectSegmentedControl *)multiSelecSegmendedControl didChangeValue:(BOOL)value atIndex:(NSUInteger)index{
    
    if(index==0)
        {
    
        _multiSelectControl.selectedSegmentIndex=0;
        _tableview1.hidden=NO;
        _tableview2.hidden=YES;
    
        [_seachTextField resignFirstResponder];
    
        // your code
    
    }
    
    if (index==1) {
    
        _multiSelectControl.selectedSegmentIndex=1;
    
        _tableview1.hidden=YES;
        _tableview2.hidden=NO;
    
        [_seachTextField resignFirstResponder];
    
         // your code
    
    }
    
    }