C# 在我的故事板中写入UITextField,但没有看到任何写入内容
我对IOS开发非常陌生,我正在使用Xamarin IOS来实现这一点 我遇到的问题是,我有一个UITextField自动声明为一个名为“dateInput”的出口。我试图做的是使用字符串写入这个textfield的text属性。我试图在ViewController类中的另一个方法中实现这一点。我已将dateInput textfield的一个新实例实例化为UITextFIeld,但当我尝试写入时,textfield中没有显示任何内容 如果我没有创建dateInput的实例,那么我只会返回一个Null异常。正如我所说,我是一个新手,所以这可能只是一个简单的解决方案,但无法解决。任何帮助都将不胜感激 视图控制器代码: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
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的代码吗?