3

我想向 a 添加一个页脚视图UITableView,显示UIProgresIndicator用户何时到达列表末尾并且将加载新数据,或者UILabel当没有更多数据要获取时。

我使用了下面的代码,但没有任何反应:

UITableViewHeaderFooterView footer = new UITableViewHeaderFooterView ();

UILabel futerlabel = new UILabel ();
futerlabel.Text = "Duke u ngarkuar";

footer.AddSubview (futerlabel);

任何方式如何实现这一点。

4

3 回答 3

3

如果你在UITableViewController尝试这个:

        TableView.TableFooterView = footer;

更新

在考虑了这一点后,我建议不要使用页脚,而是在数据末尾使用一个额外的单元格,这将产生这种效果

使用此方法检查您是否已滚动到最后一项并更新表的数据:

public override void WillDisplay (UITableView tableView, UITableViewCell cell, NSIndexPath indexPath)
    {
        // if showing last row of last section, load more
        if (indexPath.Section == tableView.NumberOfSections()-1 && indexPath.Row == tableView.DataSource.RowsInSection(tableView, indexPath.Section)-1 && !FullyLoaded) {
            var growRowSource = tableView.DataSource as GrowRowTableDataSource;
            if (growRowSource != null) {
                FullyLoaded = growRowSource.LoadNextPage ();
                Task.Delay (5000);
                tableView.ReloadData ();    
            }

        }
    }

然后在 Delegate 中检查最后一项并创建一个不同的单元格,如下所示:

public override UITableViewCell GetCell (UITableView tableView, Foundation.NSIndexPath indexPath)
    {
        if (indexPath.Row == LoadedItems.Count) {
            var loadingCell = tableView.DequeueReusableCell (LoadingCellID, indexPath) as LoadFooterCell;
            loadingCell.Loading = !hasNextPage;
            return loadingCell;
        }
        var cell = tableView.DequeueReusableCell (CellID, indexPath) as GrowRowTableCell;
        var item = LoadedItems [indexPath.Row];

        // Setup
        cell.Image = UIImage.FromFile(item.ImageName);
        cell.Title = item.Title;
        cell.Description = item.Description;

        return cell;
    }
    bool hasNextPage;

我在这里快速模拟了 GrowTable Xamarin 示例代码中的一个示例: https ://github.com/b099l3/LoadingTableExample

于 2016-04-22T15:37:36.803 回答
2

You could accomplish this in several ways, I will layout a few here:

In your TableViewSource you can do this:

1.) Implement: public override UIView GetViewForFooter(UITableView tableView, nint section) and return your UILabel

2.) Implement public override nfloat GetHeightForFooter(UITableView tableView, nint section) and return a height for your UIView


If your Footer is going to be a simple UILabel, you can replace Step 1 above with this:

Implement public override string TitleForFooter(UITableView tableView, nint section) and return "Duke u ngarkuar".

You will still need to implement public override nfloat GetHeightForFooter(UITableView tableView, nint section) and return a height otherwise your footer wont show up.


Alternatively, UITableView exposes a property called TableFooterViewthat allows you to set a UIView for a footer.

于 2016-04-22T20:41:57.163 回答
0

您可以根据自己的喜好调整大小。

var footerView = new UIView(new RectangleF(0, 0, 375, 66));
TableView.TableFooterView = footerView;
于 2017-09-22T14:11:23.287 回答