Вы избавите себя от многих проблем, если будете использовать мою библиотеку MonoTouch.Dialog, которая позаботится обо всех этих деталях и сделает именно то, что вы хотите, и даже больше. Это позволит вам сосредоточиться на своем приложении, а не на администрировании, и я верю, что вы сможете двигаться быстрее, вы можете получить его из:
http://github.com/migueldeicaza/MonoTouch.Dialog
Первая проблема с этим кодом заключается в том, что он жестко кодирует ячейки одного типа. Как правило, вам нужно сначала проверить раздел / строку и на основе этой информации определить тип ячейки, которую вы хотите.
Как только вы определили тип ячейки, которую вы хотите, затем вы используете эту информацию для вызова DequeueReusableCell с токеном, связанным с этим идентификатором ячейки. Это отличается, например, для ячейки, которая содержит строку ввода, по сравнению с ячейкой, которая содержит изображение. Вам нужно вычеркнуть нужную клетку.
Вам не нужно делать каждую ячейку уникальной, вся необходимая информация находится в разделе / строке, так что вам нужно что-то, что сопоставляет раздел / строку с вашей уникальной ячейкой. Простой подход состоит в том, что есть один раздел, а строка - это индекс в массив данных, из которого вы хотите получить больше информации.
Небольшое руководство по передовым методам создания этих ячеек можно найти здесь:
http://tirania.org/monomac/archive/2011/Jan-18.html
Если вы использовали MonoTouch.Dialog, весь ваш код мог бы быть:
var elements = "foo, bar, baz";
var dvc = new DialogViewController ();
dvc.Root = new RootElement ("My results") {
from x in elements.Split (',')
select (Element) new StringElement (x);
};
dvc.Root.Add ("Final one");
current.PresentModalViewController (dvc, true);
Вышеприведенное создает UITableView с 4 строками, по одному для «foo», «bar» и «baz», используя Linq, и добавляет дополнительный узел в конце, просто чтобы показать, как использовать API Add.
Есть также много разных элементов, которые вы можете использовать, вы не ограничены только элементами String.