如何自定义uitableview所选项目背景

时间:2014-05-21 08:50:09

标签: xcode mono xamarin.ios xamarin

我需要对所选项目进行特殊选择 basic selected 我希望它看起来像: I wish it looked as

如何让Uitableview所选项目看起来完全像这样?

3 个答案:

答案 0 :(得分:0)

如果要在所选单元格中显示内置附件,则应在 RowSelected()方法覆盖中添加类似以下代码的内容em> UITableViewSource 类:

public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
    // do something with your data...
    // data is a model object that contain a public bool Selected {get; set;} property
    // myDataCollection is a collection of model objects

    var data = myDataCollection [indexPath.Row];
    var cell = tableView.CellAt(indexPath);

    if (data.Selected)
    {
        data.Selected = false;
        cell.Accessory = UITableViewCellAccessory.None;
    }
    else
    {
        data.Selected = true;
        cell.Accessory = UITableViewCellAccessory.Checkmark;
    }

    tableView.DeselectRow (indexPath, true);
}        
}

UITableViewCellAccessory 枚举的可用成员包括: Checkmark DetailButton DetailDisclosureButton DisclosureIndicator < / em>和

请注意,您应该跟踪模型类中已选择的单元格,并在 GetCell()方法中设置附件,以防止附件显示在已回收的单元格上当它们在屏幕外滚动时,通过 DequeueReusableCell()方法。

如果要显示您选择的任意UIImage,您需要将上面的代码替换为:

cell.AccessoryView = myImageView;

其中 myImageView UIImageView ,其中的图片是从包中加载的。

答案 1 :(得分:0)

您可以设置SelectedBackgroundView属性

cell.SelectedBackgroundView = new MyView()

答案 2 :(得分:0)

这是我的解决方案

int index = Array.IndexOf(itemlst,curValue);
NSIndexPath path = NSIndexPath.FromRowSection(index, 0);
 var cell = LanguageList.CellAt(path); // language list it`s UiTableView
                var selectedItemView = new UIView ();
                var image = new UIImageView (UIImage.FromFile ("active.png"));
                image.Frame = new RectangleF (300, 17, 10, 10);
                selectedItemView.AddSubview (image);
                selectedItemView.Layer.BorderWidth = 1;
                selectedItemView.Layer.BorderColor = UIColor.FromRGB (50,50, 50).CGColor;
                cell.SelectedBackgroundView = selectedItemView;