使用SWTableViewCell的表格单元格滑动菜单

时间:2014-11-14 13:51:28

标签: c# xamarin xamarin.ios

我在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;,我会毫无问题地获得所有行。但我想要滑块菜单。

1 个答案:

答案 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提供帮助,如果我没有解决这个问题,我会接受你的提议!