Xuni for IOS のドキュメント
検索ボックスのフィルタ処理

FlexGrid は、検索ボックスを使用してデータをフィルタ処理する柔軟性を提供します。ユーザーはフィルタ検索ボックスを追加し、必要に応じて高さ、幅、色、テキスト、フィルタ処理パターンなどの属性を設定できます。この例は、グリッド内で検索する値を入力するための単純なグレーのテキストボックスを示します。たとえば、フィルタテキストボックスに 22 と入力すると、Collection View インタフェースはグリッドデータをフィルタ処理して、22 が含まれているすべての値を表示します。

import UIKit
import XuniFlexGridKit

class FullTextFilterController: UIViewController, UITextFieldDelegate {

    var grid = FlexGrid()
    var _filterField = UITextField()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // ビューを読み込んだ後の追加セットアップを行います。
        _filterField.delegate = self
        _filterField.text = "Enter text to Filter"
        _filterField.returnKeyType = UIReturnKeyType.Done
        _filterField.keyboardType = UIKeyboardType.Default
        _filterField.backgroundColor = UIColor.lightGrayColor()

        grid.isReadOnly = true
        grid.itemsSource = CustomerData.getCustomerData(100)
        
        self.view.addSubview(grid)
        self.view.addSubview(_filterField)
    }
    
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        _filterField.frame = CGRectMake(0, 65, self.view.bounds.size.width, 50)
        grid.frame = CGRectMake(0, 115, self.view.bounds.size.width, self.view.bounds.size.height-115)
        grid.setNeedsDisplay()
    }
    func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
        return true
    }
    func textFieldDidBeginEditing(textField: UITextField) {
        textField.selectAll(nil)
    }
    func textFieldShouldEndEditing(textField: UITextField) -> Bool {
        return true
    }
    func textFieldDidEndEditing(textField: UITextField) {
        let dateFormat = NSDateFormatter()
        dateFormat.setLocalizedDateFormatFromTemplate("M/d/yy")
        grid.collectionView.filter = {(item : NSObject?) -> Bool in
            let d = item as! CustomerData;
        
            if (String(format: "%.f", d.customerID) == textField.text) {
                return true
            }
            else if (String(format: "%.f", d.countryID) == textField.text) {
                return true
            }
            else if (String(format: "%.f", d.orderTotal) == textField.text) {
                return true
            }
            else if (d.firstName == textField.text) {
                return true
            }
            else if (d.lastName == textField.text)
            {
                return true
            }
            else if (d.city == textField.text){
                return true
            }
            else if (d.address == textField.text){
                return true
            }
            else if (d.country == textField.text){
                return true
            }
            else if (dateFormat.stringFromDate(d.lastOrderDate) == textField.text) {
                return true
            }
            else {
                return false
            }
        } as IXuniPredicate;
    }

    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
}

@implementation FullTextFilterController

- (void)viewDidLoad {
    [super viewDidLoad];
        
    // ビューを読み込んだ後の追加セットアップを行います(通常は nib から)。
    UITextField *filterField = [[UITextField alloc] init];
    filterField.delegate = self;
    filterField.text = @"Enter text to Filter";
    filterField.returnKeyType = UIReturnKeyDone;
    filterField.keyboardType = UIKeyboardTypeDefault;
    filterField.backgroundColor = [UIColor lightGrayColor];

    FlexGrid *flex = [[FlexGrid alloc] init];
    flex.isReadOnly = true;
    flex.itemsSource = [CustomerData getCustomerData:100];
    flex.tag = 1;
    filterField.tag = 2;
    [self.view addSubview:flex];
    [self.view addSubview:filterField];
}

- (void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];
    FlexGrid *flex = (FlexGrid*)[self.view viewWithTag:1];
    UITextField *filterField = (UITextField*)[self.view viewWithTag:2];

    filterField.frame = CGRectMake(0, 65, self.view.bounds.size.width, 50);
    flex.frame = CGRectMake(0, 115, self.view.bounds.size.width, self.view.bounds.size.height-115);
    [flex setNeedsDisplay];
}

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    return true;
}
-(void)textFieldDidBeginEditing:(UITextField *)textField{
    [textField selectAll:nil];
}
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
    return true;
}
-(void)textFieldDidEndEditing:(UITextField *)textField{
    FlexGrid *flex =  (FlexGrid *)[self.view viewWithTag:1];
    //NSMutableArray *array = [[NSMutableArray alloc] init];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"M/d/yy"];
    flex.collectionView.filter = ^ BOOL (NSObject *item){
        CustomerData *d = (CustomerData*)item;

        if ([[NSString stringWithFormat:@"%@", d.customerID] isEqualToString:textField.text]) {
            return true;
        }
        else if ([[NSString stringWithFormat:@"%@", d.countryID] isEqualToString:textField.text]) {
            return true;
        }
        else if ([[NSString stringWithFormat:@"%@", d.weight] isEqualToString:textField.text]) {
            return true;
        }
        else if ([d.first isEqualToString:textField.text]) {
            return true;
        }
        else if ([d.last isEqualToString:textField.text])
        {
            return true;
        }
        else if ([d.father isEqualToString:textField.text]){
            return true;
        }
        else if ([d.brother isEqualToString:textField.text]){
            return true;
        }
        else if ([d.cousin isEqualToString:textField.text]){
            return true;
        }
        else if ([[dateFormat stringFromDate:d.hireDate] isEqualToString:textField.text]) {
            return true;
        }
        else {
            return false;
        }
    };
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    return true;
}

@end

 

 


Copyright © GrapeCity inc. All rights reserved.