Meine TableView-Zelle hat eine Schaltfläche. Beim Klicken möchte ich die Zelle erweitern. Zum Vergrößern ändere ich die Höhe der Zelle beim Klicken auf die Schaltfläche und lade die Zeile neu. Aber wenn eine Zeile erweitert wird und ich versuche, eine andere Zeile zu erweitern, ist das Verhalten nicht wie erwartet. Die zuvor erweiterte Zeile schließt statt der angeklickten Zeile.ios: UITableViewCell Erweitern funktioniert nicht wie erwartet
Auch manchmal muss ich zweimal auf die Schaltfläche klicken, um zu erweitern.
public class ProgramMeasurementDetailsTableViewSource : UITableViewSource
{
List<ProgramMeasurementDetail> mList;
string HeaderIdentfier = "programMeasurementDetailsHeader";
string CellIdentifier = "programMeasurementDetailsCell";
int TAG_CHECKBOX = 61;
int TAG_LABEL_VITAL_NAME = 62;
int TAG_LABEL_GOAL = 63;
int TAG_BUTTON_EDIT = 64;
int TAG_VIEW_HEADER_COLUMN_SEPARATOR = 66;
int TAG_VIEW_ROW_COLUMN_SEPARATOR = 65;
List<bool> expandStatusList = new List<bool>();
UITableView tableView;
public ProgramMeasurementDetailsTableViewSource(List<ProgramMeasurementDetail> mList, UITableView tableView)
{
this.tableView = tableView;
this.mList = mList;
for (int i = 0; i < mList.Count; i++)
expandStatusList.Add(false);
}
public override nint NumberOfSections(UITableView tableView)
{
return 1;
}
public override nint RowsInSection(UITableView tableview, nint section)
{
return mList.Count;
}
public override nfloat GetHeightForHeader(UITableView tableView, nint section)
{
return 32;
}
public override nfloat GetHeightForRow(UITableView tableView, Foundation.NSIndexPath indexPath)
{
if (expandStatusList[indexPath.Row])
return 70;
else
return 32;
}
public override UITableViewCell GetCell(UITableView tableView, Foundation.NSIndexPath indexPath)
{
UITableViewCell cell = tableView.DequeueReusableCell(CellIdentifier);
if (cell == null)
{
cell = new UITableViewCell(UITableViewCellStyle.Default, CellIdentifier);
}
CheckBox checkBox = (CheckBox)cell.ViewWithTag(TAG_CHECKBOX);
UILabel vitalNameLabel = (UILabel)cell.ViewWithTag(TAG_LABEL_VITAL_NAME);
UILabel goalLabel = (UILabel)cell.ViewWithTag(TAG_LABEL_GOAL);
UIButton editGoalButton = (UIButton)cell.ViewWithTag(TAG_BUTTON_EDIT);
editGoalButton.TouchUpInside += (object sender, EventArgs e) =>
{
expandStatusList[indexPath.Row] = !expandStatusList[indexPath.Row];
tableView.ReloadRows(new Foundation.NSIndexPath[] { indexPath }, UITableViewRowAnimation.Automatic);
};
.....
return cell;
}
}
Ich habe versucht, auf die Schaltfläche Click-Ereignis innerhalb des if (Zelle == null) Handhabung bewegt, dann aber Taste klicken/expandieren haupt nicht funktioniert. Ich habe einen Haltepunkt gesetzt und es scheint, dass dieser Teil nie ausgeführt wird.
Ich habe das Zellenlayout in Storyboard entwickelt.
Ich habe seit einiger Zeit mit diesem Problem zu kämpfen. Jede Hilfe wird geschätzt.
Also sollte ich kein Storyboard zum Entwerfen von Zellen verwenden? Jetzt habe ich die Zelle im Storyboard entworfen. Ist es möglich, es als das Design der Zelle in der Klasse CustomCell zu verwenden? – HeisenBerg
Sie können auch eine Zelle aus dem Storyboard verwenden. Stellen Sie nur sicher, dass "TableView Cell Style" auf "Custom" eingestellt ist und geben Sie ihm einen Klassennamen. Xamarin erzeugt '.cs' Dateien für die benutzerdefinierte Klasse. Der Anfangsteil dieses Tutorials zeigt Ihnen, wie Sie den Code hinter der Datei generieren: https://developer.xamarin.com/guides/ios/user_interface/tables/autosizing-row-height/ – pnavk
Wo definiere ich die Schaltfläche TouchUpinside wann benutzerdefinierte Zellenklasse verwenden? Setze ich die benutzerdefinierte Zellenklasse ein. Wenn ja, wie lade ich die Tabellenansichtszeile von dort neu? – HeisenBerg