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