Добавить строку в TableView - PullRequest
       13

Добавить строку в TableView

0 голосов
/ 16 августа 2010

Итак, у меня есть два представления: у первого мой TableView, у второго - TextField, и я хочу добавить строку в TableView с текстом в TextField.

На данный момент я могу просто добавить строку с

[myTableView addObject:@"Test 1"];
[myTableView addObject:@"Test 2"];
[myTableView addObject:@"Test 3"];

Спасибо за вашу помощь!

- (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];
}

NSString *cellValue = [myTableView objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

return cell;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [myTableView count];

}

Ответы [ 2 ]

1 голос
/ 16 августа 2010

Я не уверен, что именно ваш вопрос здесь, но я думаю, что будет гораздо яснее, если вы покажете нам методы делегата табличного представления -tableView:numberOfRowsInSection: и -tableView:cellForRowAtIndexPath:. Это ключевые моменты, в которых вы будете вносить изменения в поведение табличного представления, и именно здесь ваш ответ, вероятно, начнется.


Хорошо. Это немного сбивает с толку - похоже, myTableView это NSArray? Обычно ожидается, что переменная с таким именем будет указателем на табличное представление. Но UITableView не имеет ни метода -addObject:, ни метода -count.

Если это так, похоже, вы хороши (хотя я действительно думаю, что вы должны переименовать этот массив). Вы должны вызвать один из -reload* методов вашего UITableView, чтобы сообщить ему, что данные изменились. Самое простое это

[ptrToTableView reloadData];

, но, немного потрудившись, вы можете получить более изумительные результаты, набрав -reloadSections:withRowAnimation:.

Если это не отвечает на вопрос, то я не уверен, что это за вопрос. :)

0 голосов
/ 29 марта 2011

добавьте к вашему заголовочному файлу UITextFieldDelegate, который должен выглядеть следующим образом:

@interface yourViewController : UIViewController <UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate> {

Мы просто делаем так, чтобы ваш ViewController распознавал действия, выполняемые с вашим TextField, с использованием делегата. Чтобы сообщить textField, чей это делегат, вы должны написать, например, в методе viewDidLoad вашего ViewController:

- (void) viewDidLoad
{
    [super viewDidLoad];
    textField.delegate = self;
}

Итак, мы должны реализовать функцию, чтобы, если пользователь закончил редактирование, добавлялся новый текст:

#pragma mark -
#pragma mark  UITextFieldDelegate Methods

- (void) textFieldDidEndEditing:(UITextField *)textField
{
    [myTableView addObject:textField.text];
    [myTableView reloadData];
    textField.text = @"";
}

Другие методы делегата перечислены ниже: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

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