我的應用程序在MT 3.0中運行良好。現在當我升級。當按鈕位於ContentView中時,我看到錯誤。單擊按鈕時發生崩潰。代碼:ContentView中的按鈕會導致MonoTouch運行時崩潰。 Monotouch 4.0中的錯誤?
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)
我希望這裏有人有一個答案,因爲你肯定不會從Attachmate得到任何有用的幫助... – 2011-05-17 22:26:41
你介意給我提供一個自包含的測試用例,展示這個問題嗎? – 2011-07-17 02:55:22
當我爲touchupinside分配相同的雙處理按鈕時,發生了一些非常類似於我的事情。 – 2014-01-27 18:47:30