2

如何使用 monotouch 在 UITableView 中获得交替的行颜色?

我目前正在使用以下方法填充我的 TableView:

public partial class myViewController : UITableViewController
    {
        public static UINavigationController navigationController;
        public static IntPtr handle;

        public CompanyViewController (IntPtr handle) : base (handle)
        {
        }


        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
            Services service = new Services();

            var myList = service.GetList(param1);

            List<string> list = new List<string>();
            foreach(var c in myList)
            {
                list.Add (c.Name);
            }

            navigationController = NavigationController;
            handle = Handle;
            var source = new CompanyTableSource(list);

            myTableView.Source = source;

        }
4

2 回答 2

7

添加这个类:

public class AlternatingTableViewDelegate : UITableViewDelegate
{
    public override void WillDisplay (UITableView tableView, UITableViewCell cell, NSIndexPath indexPath)
    {
        if (indexPath.Row % 2 == 0) {
            cell.BackgroundColor = UIColor.White;
        } else {
            cell.BackgroundColor = UIColor.LightGray;
        }
    }
}

在您的表格视图中使用它:

var tvdelegate = new AlternatingTableViewDelegate()
myTableView .Delegate = tvdelegate
于 2012-12-04T14:30:32.573 回答
1

有更好的方法来做到这一点。您需要做的就是在 GetCell 方法中设置背景颜色,交替使用线条颜色,如此处所示。它还解决了在tableview中不处理一行触摸的问题。

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) {
        if (indexPath.Row % 2 == 0) {
                ContentView.BackgroundColor = UIColor.DarkGray;
        } else {
                ContentView.BackgroundColor = UIColor.DarkTextColor;
        }
}
于 2016-01-14T17:44:53.910 回答