gpt4 book ai didi

c# - ContentView 中的按钮导致 MonoTouch 运行时崩溃。 Monotouch 4.0 中的错误?

转载 作者:可可西里 更新时间:2023-11-01 06:22:35 29 4
gpt4 key购买 nike

我的应用程序在 MT 3.0 中运行良好。现在,当我升级时。当按钮位于 ContentView 中时,我看到错误。单击按钮时会发生崩溃。代码:

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPa
float width = tableView.Bounds.Width - 70;

var cell = tableView.DequeueReusableCell(kCellIdentifier);
//if (cell == null)
//{
cell = new UITableViewCell(UITableViewCellStyle.Subtitle, kCellIdentifier);
// }

var behavior = tvc.behaviors.ElementAt(indexPath.Row);
cell.TextLabel.Text = behavior.Name;
cell.TextLabel.Font = UIFont.BoldSystemFontOfSize(22f);
cell.DetailTextLabel.Text = behavior.Definition;
var view = UIButton.FromType(UIButtonType.Custom);
view.Tag = indexPath.Row;
view.SetImage(UIImage.FromBundle("Images/plus.png"), UIControlState.Normal);
view.Frame = new RectangleF(width - 50, 10, 50, 50);

view.TouchUpInside += IncrementBehavior;

var label = new UILabel(new RectangleF(width - 80, 10, 50, 50));
label.Text = behavior.CurrentCount.ToString();
label.BackgroundColor = UIColor.Clear;
label.Font = UIFont.BoldSystemFontOfSize(24f);
cell.ContentView.AddSubview(view);
cell.ContentView.AddSubview(label);
//cell.BackgroundColor = UIColor.Clear;)

return cell;
}

void IncrementBehavior(object sender, EventArgs e) {
var button = (UIButton)sender;
var tag = button.Tag;
var behavior = tvc.behaviors[tag];

var indexpath = NSIndexPath.FromRowSection(tag, 0);
var newBehavior = Repository.GetBehavior(behavior.Id);
newBehavior.CurrentCount++;
Repository.Update(newBehavior);
tvc.behaviors[tag] = newBehavior;


tvc.TableView.ReloadRows(new[] { indexpath }, UITableViewRowAnimation.None);

}

我交替收到这些错误:

Name: NSInvalidArgumentException Reason: -[__NSCFSet BridgeSelector]: unrecognized selector sent to instance 0x5c3c570

No constructor found for MonoTouch.UIKit.UIControlEventProxy::.ctor(System.IntPtr)

最佳答案

不确定这是否是问题所在,但当我升级到 4.0 时,我也遇到了一些随机崩溃。事实证明,4.0 GC 更具侵略性,我之前逃避的事情不再符合标准。

特别是,如果我有一个分配给按钮的事件处理程序,我需要确保该按钮是在类级别声明的。如果它是在方法中本地声明的,GC 会在它超出范围时清除引用,然后当事件处理程序试图触发时,它的引用不再存在。

所以尝试将按钮的声明移到方法之外。

关于c# - ContentView 中的按钮导致 MonoTouch 运行时崩溃。 Monotouch 4.0 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6037792/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com