В основном, что бы мне хотелось, если нажата кнопка редактирования, к моему списку добавляется ячейка «Создать», которая будет перемещаться на отдельный контроллер экрана для добавления. В настоящее время у меня работает удаление, а также вставка (там, где она просто вставляет пустую ячейку в вашу таблицу). Может кто-нибудь помочь с этим? Благодарю. Ниже приведен мой код ...Вставить на CommitEditingStyle Monotouch
private class UserAlertsTableViewSource : UITableViewSource
{
const string DEFAULT_CELL = "UserAlertsCell";
private UserAlertsListController _useralertslistController;
public UserAlertsTableViewSource(UserAlertsListController useralertslistController)
{
this._useralertslistController = useralertslistController;
}
public override int RowsInSection(UITableView tableView, int section)
{
return _useralertslistController.Alerts.Count;
}
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
int row = indexPath.Row;
var cell = tableView.DequeueReusableCell(DEFAULT_CELL) as UserAlertsCell;
if (null == cell) {
cell = new UserAlertsCell();
var views = NSBundle.MainBundle.LoadNib("UserAlertsCell", cell, null);
cell = Runtime.GetNSObject(views.ValueAt(0)) as UserAlertsCell;
}
cell.Name = _useralertslistController.Alerts[indexPath.Row].LakeName;
cell.AlertLevel = _useralertslistController.Alerts[indexPath.Row].AlertLevel;
cell.AlertVariance = _useralertslistController.Alerts[indexPath.Row].AlertVariance;
return cell;
}
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
SelectItem (tableView, indexPath);
}
public override void AccessoryButtonTapped(UITableView tableView, NSIndexPath indexPath)
{
SelectItem(tableView, indexPath);
}
public override float GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
{
return 60f;
}
public void SelectItem(UITableView tableView, NSIndexPath indexPath)
{
// MapController mapController = new MapController();
// _lakelevelsController.NavigationController.PushViewController(mapController, true);
}
// public override bool CanEditRow (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath)
// {
// return true;
// }
public override UITableViewCellEditingStyle EditingStyleForRow (UITableView tableView, NSIndexPath indexPath)
{
var count = this._useralertslistController.Alerts.Count;
if (indexPath.Row == count-1)
{
return UITableViewCellEditingStyle.Insert;
}else
{
return UITableViewCellEditingStyle.Delete;
}
}
public override void CommitEditingStyle (UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath)
{
switch (editingStyle)
{
case UITableViewCellEditingStyle.Delete:
this._useralertslistController.Alerts.RemoveAt (indexPath.Row);
tableView.DeleteRows (new NSIndexPath[] { indexPath } , UITableViewRowAnimation.Fade);
break;
case UITableViewCellEditingStyle.Insert:
this._useralertslistController.Alerts.Insert (indexPath.Row, new AlertSettings());
tableView.InsertRows (new NSIndexPath[] { indexPath }, UITableViewRowAnimation.Fade);
break;
case UITableViewCellEditingStyle.None:
Console.WriteLine ("CommitEditingStyle: None called");
break;
}
}
public override void MoveRow (UITableView tableView, NSIndexPath sourceIndexPath, NSIndexPath destinationIndexPath)
{
var item = this._useralertslistController.Alerts[sourceIndexPath.Row];
int deleteAt = sourceIndexPath.Row;
if (destinationIndexPath.Row < sourceIndexPath.Row)
{
deleteAt = sourceIndexPath.Row + 1;
}
this._useralertslistController.Alerts.Insert (destinationIndexPath.Row, item);
this._useralertslistController.Alerts.RemoveAt (deleteAt);
}
}
В чем же проблема? Что он делает (или не делает)? – Jason
смотрите править sir! – k1komans
Почему бы не просто всегда отображать ячейку «Создать», а не привязывать ее к кнопке редактирования? – Jason