DetailDisclosureButton の代わりにカスタム セル アクセサリを使用すると、AccessoryButtonTapped イベントを使用できなくなります。選択された行とセクションを数えますか?
image = UIImage.FromFile ("Images/checkmark.png");
lockButton = new UIButton(UIButtonType.Custom);
frame = new RectangleF(0f, 0f, 25f, 25f);
lockButton.Frame = frame;
lockButton.SetBackgroundImage(image, UIControlState.Normal);
lockButton.TouchUpInside += (sender, e) =>
{
try{
int i =0;
foreach(UIView sv in cell.Subviews)
{
if(cell.Subviews[i] is UITableView)
;
}
}
catch
{
}
};
if (sourceType == TableSoureType.Collections && collGroup [indexPath.Section].LocationEntity [indexPath.Row].CollectionStatus.ToLower () != "open") {
cell.TextLabel.TextColor = UIColor.Gray;
cell.AccessoryView = lockButton;
}
else if(sourceType == TableSoureType.Collections && collGroup [indexPath.Section].LocationEntity [indexPath.Row].CollectedToday) {
cell.TextLabel.TextColor = UIColor.Black;
cell.AccessoryView = lockButton;
}
else
{
cell.TextLabel.TextColor = UIColor.Black;
cell.Accessory = UITableViewCellAccessory.DetailDisclosureButton;
}
これは新しい投稿の原因かもしれませんが、ボタンをクリックするとシミュレーターでアプリケーションが終了するという問題もあります-ガベージコレクションの問題である可能性があることを理解しているので、ボタン、画像、およびフレームの宣言を移動しましたクラスレベルまで無駄に。
だから私は2つの問題があります:
1 - TouchUpInside イベントが正常に動作するようになったら、そのイベントが発生したときにどのセルが選択されていたかをどのように把握すればよいですか?
2 - シミュレーターでクラッシュを引き起こさずに TouchUpInside イベントを発生させる方法 - ガベージ コレクションの問題であるという私の理解から - デバイス自体でクラッシュが発生しないことも重要だと思います...しかし、内部のコードも機能しません