2012-04-10 2 views
0

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

+0

Я не думаю, что понимаю рабочий процесс. Вы говорите, что «пользователь нажимает кнопку добавления в ячейке», а также «затем он добавляется в представление таблицы», но если есть ячейка, содержащая кнопку, она уже должна быть в таблице. –

+0

Да. Кнопка добавления уже присутствует в ячейке с текстом по умолчанию. когда пользователь нажимает кнопку добавления, пользователь должен иметь возможность редактировать текст в этой конкретной ячейке. После того, как пользователь вводит текст в этой ячейке, следует добавить новую ячейку с кнопкой добавления и с текстом по умолчанию. –

ответ

1

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

Помимо этого, не знаю точно, что ваша проблема, если вы сделаете ваш контроллер в качестве uitable делегата, то вы можете легко добавлять или удалять клетки путем доступа всех соответствующих методов, в частности, что один:

- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleInsert) { 
     // ...... 
    } 
} 

который вызывается:

[yourTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath ] withRowAnimation:UITableViewRowAnimationAutomatic]; 
0

есть метод, как (UITableViewCell *) createNewCellForTableView. Это создаст и вернет UITableViewCell.

В вашем CellForRowAtIndexPath используйте этот метод для создания всех ячеек для вашего tableView. Это нужно сделать так, потому что, когда вы выполняете [tableView reloadData];, ему нужно создавать новые ячейки каждый раз, когда вы добавляете новую ячейку.

Наконец, после создания новых ячеек, в IBAction кнопки ADD, убедитесь, что вы перезагрузите tableView.

~ Более простой вариант:

Поскольку вы просто ищете для пользователя, чтобы добавить текст, вы можете иметь textField встроенный в UITableViewCell. Как только пользователь закончит печатать, вы можете добавить текст в dataSource (массив, заполняющий tableView) и перезагрузить tableView. Убедитесь, что у вас есть textField enabled или disabled, как вы этого хотите.

0

Это, как я это делаю, и она работает:

первым, создать переменную экземпляра следующим образом:

int numRows = 0; 

Реализуйте метод numberOfRowsInSection следующим образом:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return numRows; 
} 

В настоящее время в мое приложение, в одном месте, я использую REST API и получаю JSON, я обновляю значение numRows как numRows = [jsondata count];

Напишите свой метод cellForRowAtIndexPath так, как вы хотели бы, если бы у вас был динамический контент. Например, в моем случае я использую indexPath.row и готовлю ячейку и возвращаю ее.

Этот метод будет вызывать только тогда, когда переменная NumRows больше 0. Таким образом, как только у вас есть динамическое содержимое, обновлять содержание NumRows, как я объяснил выше, и немедленно вызвать метод [YourtableView reloadData];


Смежные вопросы