Показаны сообщения с ярлыком UITableView. Показать все сообщения
Показаны сообщения с ярлыком UITableView. Показать все сообщения

четверг, 5 апреля 2012 г.

Делаем поиск в UITableView с помощью UISearchBar

Для начала надо подготовить основной контроллер вьюхи для работы с UISearchBar:


@interface MyViewController : UITableViewController <UISearchDisplayDelegate, UISearchBarDelegate, UITableViewDelegate, UITableViewDataSource> {
    
    // For Search!
    NSArray *searchResults;
    IBOutlet UISearchDisplayController *searchController;
}


@property(nonatomic, copy) NSArray *searchResults;
@property(nonatomic, retain) IBOutlet UISearchDisplayController *searchController;

@end

Затем добавить во вьюху Search Display Controller и правильно соединить его с аутлетами! В качестве делегата естественно назначить FileOwner.

Удаление ячеек в UITableView


// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        
        // At first delete data
        // delete address from address list
        [userDataController removeAddress:indexPath.row];
        
        // Delete the row from the data source
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
    //else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    //}   
}

воскресенье, 21 августа 2011 г.

UITextField: делаем, что надо и прячем клавиатуру


Контроллер, в котором вы хотите обрабатывать события UITextField должен поддерживать протокол <UITextFieldDelegate>
Например, у меня есть View, в котором есть UITableView и UITextField. И я в одном контроллере хочу обрабатывать поведение и того и другого. Тогда этот контроллер должен поддерживать соответствующие протоколы.

// AccountOptionsController.h
@interface AccountOptionsController : UIViewController <UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate>

Чтобы спрятать клавиатуру после окончания ввода данных и нажатия кнопки Return, нужно переопределить метод textFieldShouldReturn. Напиример так:

// AccountOptionsController.m
 
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

Чтобы обработать введенные данные, нужно переопределить метод textFieldDidEndEditing.

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    if (textField == loginField)
    {
        userData.login = textField.text;
    }
    ...
}

Думаю, общая идея ясна, а для дополнительных сведений смотри UITextFieldDelegate Protocol Reference.
С UITableView то же самое. Смотри UITableViewDelegate Protocol Reference и UITableViewDataSource Protocol Reference.