我在VisualStudio(Xamario.iOS)中使用组件SWTableViewCell实现了表格滑动菜单。下面是我的方法代码" GetCell"
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)`<br/>
{
SWTableViewCell.SWTableViewCell cell = null;
cell = (SWTableViewCell.SWTableViewCell)tableView.DequeueReusableCell(cellIdentifier);
if (cell == null)
cell = new SWTableViewCell.SWTableViewCell(UITableViewCellStyle.Subtitle, cellIdentifier);
cell.SetRightUtilityButtons(GetButtons(), 30.5f);
cell.Delegate = new SWTableViewCell.SWTableViewCellDelegate();
cell.TextLabel.Text = tableItems[indexPath.Row];
}
private UIButton[] GetButtons()
{
UIButton[] buttons = new UIButton[1];
UIButton btn = new UIButton();
btn.SetTitle("Delete", UIControlState.Normal);
buttons[0] = btn;
UIImage image = UIImage.FromFile("Profile/Images/house");
btn.SetImage(image, UIControlState.Normal);
return buttons;
}
我在这些方法中没有任何异常,但毕竟我在主方法中的UIApplication.Main(args,null,&#34; AppDelegate&#34;)行获取异常。
NSInvalidArgumentException Reason: *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil
如果我跳过&#34; SetRightUtilityButtons&#34;,我会毫无问题地获得所有行。但我想要滑块菜单。
答案 0 :(得分:3)
遇到与上面相同的错误消息后,我挖到了异常调用堆栈,发现需要明确设置按钮的颜色。来自the original project on github的帮助程序代码有几种帮助创建按钮的方法。我翻译了sw_addUtilityButtonWithColor
函数,它现在完美无缺。
我也使用MVVMCross所以我将以下帮助方法添加到SWTableViewCell
的子类中,如下所示:
public class MvxSwTableViewCell
: SWTableViewCell, IMvxBindable
{
// Rest of class omitted
public static UIButton GetUtilityButtonWithColor(UIColor color, string title)
{
var button = new UIButton(UIButtonType.Custom);
button.BackgroundColor = color;
button.SetTitle(title, UIControlState.Normal);
button.SetTitleColor(UIColor.White, UIControlState.Normal);
button.TitleLabel.AdjustsFontSizeToFitWidth = true;
return button;
}
}
我现在用它在GetOrCreateCellFor
的{{1}}方法中创建实用工具按钮。
希望能帮助遇到此问题的其他人。非常感谢Nagaraj提供帮助,如果我没有解决这个问题,我会接受你的提议!