Контроллер табличного представления на контроллере представления - PullRequest
2 голосов
/ 10 мая 2011

Я создаю приложение, в котором я хочу отобразить текстовое поле, и когда я введу в него слово, оно отобразит содержимое из словаря, которое соответствует этому слову. Теперь я хочу отобразить список, который будет генерировать из моего словаря в соответствии со словом, введенным в текстовом поле, в табличном представлении, и это табличное представление должно быть на том же контроллере представления, где у меня есть текстовое поле. Я имею в виду, возможно ли создать табличное представление с возможностью прокрутки, чтобы пользователь мог прокручивать список и затем выбирать слово, которое он хочет.

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

Да, это возможно.Возьмите IBOutlet для UITableView и подключите его.Определите его источник данных и делегируйте его вашему контроллеру.Реализуйте UITableViewDelegate на своем контроллере и переопределите все методы, такие как cellForRowAtIndex и другие.

//FilterDataViewController.h
#import <UIKit/UIKit.h>
@interface FilterDataViewController : UIViewController <UITableViewDelegate>
{
    IBOutlet UITableView *tblView;
    IBOutlet UITextField *txtFld;

    NSMutableArray *arrSrch;
    NSMutableArray *srchedData;
}
-(IBAction)srchBtnTapped:(id)sender;
@end

//FilterDataViewController.m
#import "FilterDataViewController.h"
@implementation FilterDataViewController

-(IBAction)srchBtnTapped:(id)sender
{
    if(![txtFld.text isEqualToString:@""])
    {
        [srchedData removeAllObjects];
        for (NSString *allStrings in arrSrch)
        {
            NSComparisonResult result = [allStrings compare:txtFld.text options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [txtFld.text length])];
            if (result == NSOrderedSame)
            {
                [srchedData addObject:allStrings];
            }
        }
        [tblView reloadData];
    }
}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    arrSrch = [[NSMutableArray alloc] initWithObjects:@"One",@"One Two",@"Two",@"Three",@"Four",@"One Five",@"Six",nil];
    srchedData = [[NSMutableArray alloc] init];
}

#pragma mark -
#pragma mark Table view data source

// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [srchedData count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.textLabel.text = [srchedData objectAtIndex:indexPath.row];
    // Configure the cell.

    return cell;
}

@end
1 голос
/ 10 мая 2011

Это, безусловно, возможно.Создайте приложение, основанное на представлении, поместите оба вида таблицы и текстовое поле в одно представление, и вы сможете делать то, что планируете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...