Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在我的故事板中写入UITextField,但没有看到任何写入内容_C#_Ios_Visual Studio_Xamarin.ios - Fatal编程技术网

C# 在我的故事板中写入UITextField,但没有看到任何写入内容

C# 在我的故事板中写入UITextField,但没有看到任何写入内容,c#,ios,visual-studio,xamarin.ios,C#,Ios,Visual Studio,Xamarin.ios,我对IOS开发非常陌生,我正在使用Xamarin IOS来实现这一点 我遇到的问题是,我有一个UITextField自动声明为一个名为“dateInput”的出口。我试图做的是使用字符串写入这个textfield的text属性。我试图在ViewController类中的另一个方法中实现这一点。我已将dateInput textfield的一个新实例实例化为UITextFIeld,但当我尝试写入时,textfield中没有显示任何内容 如果我没有创建dateInput的实例,那么我只会返回一个Nu

我对IOS开发非常陌生,我正在使用Xamarin IOS来实现这一点

我遇到的问题是,我有一个UITextField自动声明为一个名为“dateInput”的出口。我试图做的是使用字符串写入这个textfield的text属性。我试图在ViewController类中的另一个方法中实现这一点。我已将dateInput textfield的一个新实例实例化为UITextFIeld,但当我尝试写入时,textfield中没有显示任何内容

如果我没有创建dateInput的实例,那么我只会返回一个Null异常。正如我所说,我是一个新手,所以这可能只是一个简单的解决方案,但无法解决。任何帮助都将不胜感激

视图控制器代码:

public void HandleDateChange(string dateOutput){

        dateInput = new UITextField();
        dateInput.Text = dateOutput;

    }
这是为textfield对象自动生成的代码:

[Outlet]
[GeneratedCode ("iOS Designer", "1.0")]
UIKit.UITextField dateInput { get; set; }
ViewDidLoad方法:

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


        testButton.TouchUpInside += (object sender, EventArgs e) =>
        {
            PerformSegue("dateSegue", this);
        };

        testLabel.Text = "ViewDidLoad";

    }
在另一个viewcontroller中调用HandleDateChange方法的点:

partial void dateValueChanged(UIDatePicker sender)
    {
        var date = PMSimpilfied.Application.NSDateToDateTime(datePicker.Date);
        var dateConversion = date.ToString("dd-MM-yyyy");
        NewPmSheetViewController newPmSheetView = new NewPmSheetViewController();
        newPmSheetView.HandleDateChange(dateConversion);
    }
这是我收到的崩溃: [日志]

提前感谢您的帮助


Jamie

如果要将参数传递给
NewPmSheetViewController
,则不应直接配置UIViewController的控件。因为在加载UIViewController之前,它的所有控件都没有加载

NewPmSheetViewController newPmSheetView=new NewPmSheetViewController()
仅表示您构造了
NewPmSheetViewController
的实例。它尚未加载到窗口中,因此其所有引用都将为空

您应该在
NewPmSheetViewController
中创建一个属性,然后使用此属性显示
dateInput
的文本:

public string dateOutput { set; get; }
此外,当您希望传递日期字符串时,
dateValueChanged()
中存在另一个错误。似乎您使用UIStoryboard初始化UIViewController,构造方法应如下所示:

partial void dateValueChanged(UIDatePicker sender)
{
    var date = PMSimpilfied.Application.NSDateToDateTime(datePicker.Date);
    var dateConversion = date.ToString("dd-MM-yyyy");
    // This identifier string can be configured in your Storyboard called "Storyboard ID"
    NewPmSheetViewController newPmSheetView = Storyboard.InstantiateViewController("NewPmSheetViewController") as NewPmSheetViewController;
    // Pass the parameter through this property
    newPmSheetView.dateOutput = dateConversion;
    // Try to show the controller on the Window
    NavigationController.PushViewController(newPmSheetView, true);
}
最后,在
newPmSheetView
ViewDidLoad()
事件中,在UITextField上显示字符串:

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

    if (dateOutput != null)
    {
        dateInput.Text = dateOutput;
    }           
}

尝试self.dateInput.text=dateOutput;现在,它正在分配给不同的对象,而不是在故事板上创建的对象。我是本地开发人员,不使用Xamarin IOS,但如果您已经在故事板上创建了对象,则无需再次实例化它。你能添加崩溃日志吗?我已经添加了self。部分,但它不允许我这样做,因为它说“自我不出现在当前上下文中”。我已经将崩溃日志作为图像添加到我的原始postyour方法属于同一个viewController,其中有textfield的出口,并且它在viewDidLoad后得到调用。对吗?当您指定它说“self不出现在当前上下文中”时,我怀疑是否存在某些范围问题。是的,这是正确的,我将添加上面的ViewdidLoad方法,看看这是否与此有关。我可以在ViewDidLoad中更改dateInput.text的值,没有任何问题。@jamileech何时调用私有方法?你能分享整个ViewController的代码吗?