Как я могу использовать данные от одного ViewController к другому, чтобы расширить информацию первого ViewController? - PullRequest
0 голосов
/ 28 марта 2019

Я написал простую программу для игры в гольф с использованием одного View Controller. Все отлично работает. Мне нужен второй ВК, чтобы отобразить результаты матчей между игроками (недостаточно места на первом ВК). Как избежать получения значений Null из первого VC?

Я пытался использовать тот же класс первого View Controller, но получаю ошибки Delegate. Мне нужен 2-й VC для наследования значений массивов 1-го VC.

1 Ответ

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

Я предполагаю, что это проект Xamarin.iOS. Как вы достигаете Второй ВК (UINavigationController ..?). Простой подход (также предполагая UINavigationController) состоит в создании следующего в SecondVC

public int[] values;

Затем в первом VC вы можете создать SecondVC, обновить массив значений и выполнить любую другую логику, необходимую после обновления массива значений.

public OnNavigateToSecondVC() {
    var secondVC = new SecondVC();
    secondVC.values = values; // Reference to values array from first VC

    NavigationController?.PushViewController(secondVC, true);
}

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

public partial class SecondVC : UIViewController
{
    int[] values;

    public SecondVC(int[] values) : base("SecondVC", null)
    {
        this.values = values;
    }

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        // Perform any additional setup after loading the view, typically from a nib.
    }

    public override void DidReceiveMemoryWarning()
    {
        base.DidReceiveMemoryWarning();
        // Release any cached data, images, etc that aren't in use.
    }
}

Swift также имеет встроенную функциональность под названием: PrepareForSegue

Вы также можете использовать это, если хотите: Подготовка к Segue в Swift

...