Xamarin iOS TableView не отображается - PullRequest
1 голос
/ 06 марта 2019

Я делаю приложение для iOS с использованием Xamarin. У меня были некоторые проблемы с UITableViews, и я нашел этот урок: https://docs.microsoft.com/en-us/xamarin/ios/user-interface/controls/tables/populating-a-table-with-data

Я создал новый проект и следовал тому, что они делали, но он не работает длямне.Должно быть, я что-то делаю не так, но не могу понять, что.

Может ли кто-нибудь взглянуть и понять, почему TableView не отображается?

BasicViewController:

public class BasicTableViewController : UIViewController
{
    private UIView view;

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        var table = new UITableView(View.Bounds);
        table.Source = new BasicTableSource("aaaaaaaaa", "bbbbb", "cccccccc", "ddddddddddddd", "eeeee");
        Add(table);
    }

    public override void LoadView()
    {
        view = new UIView()
        {
            BackgroundColor = UIColor.White,
        };

        View = view;
    }
}

BasicTableViewSource:

public class BasicTableSource : UITableViewSource
{
    private readonly string[] items;

    public BasicTableSource(params string[] items)
    {
        this.items = items;
    }

    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
    {
        var cell = tableView.DequeueReusableCell("cell");
        if (cell == null)
            cell = new UITableViewCell(UITableViewCellStyle.Default, "cell");

        cell.TextLabel.Text = items[indexPath.Row];

        return cell;
    }

    public override nint RowsInSection(UITableView tableview, nint section)
    {
        return items.Length;
    }
}

AppDelegate:

[Register("AppDelegate")]
public class AppDelegate : UIApplicationDelegate
{
    public override UIWindow Window { get; set; }

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        Window = new UIWindow(UIScreen.MainScreen.Bounds);
        Window.RootViewController = new BasicTableViewController();

        Window.MakeKeyAndVisible();

        return true;
    }
}

Как выглядит симулятор при запуске этого проекта: Как выглядит симулятор

1 Ответ

0 голосов
/ 07 марта 2019

Причина:

При переопределении метода LoadView. Кажется, что вы забыли установить Frame из view. Так что размер представления будет с высотойкак 0 и ширина как 0.

Решение:

Установить размер кадра как размер экрана.

public override void LoadView()
{
    view = new UIView()
    {
        Frame = UIScreen.MainScreen.Bounds,
        BackgroundColor = UIColor.White,
    };

    View = view;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...