我有两个ViewController,一个叫做ListViewController,另一个叫做UploadViewController。 ListViewController是启动后的第一个视图,按下“new”按钮,它将跳转到UploadViewController。我的最后一个问题是:我通过UploadViewController.cs获得了一个图像,我想在ListViewController上显示它,我该怎么做?
我的方法是通过一个函数将UploadViewController下的图像传递给ListViewController。
在UploadViewController中,我定义了“listView”,它的类型是ListViewController,这样我就可以使用ListViewController中的函数了。 (这是我的目标,不确定这一步是否正确。)
ListViewController listView = new ListViewController((IntPtr)null);
然后在UploadViewController中,
protected void Handle_FinishedPickingMedia (object sender, UIImagePickerMediaPickedEventArgs e)
{
UIImage originalImage = e.Info[UIImagePickerController.OriginalImage] as UIImage;
selectedImage = originalImage;
listView.SetImage (selectedImage);
this.imagePicker.DismissModalViewController (true);
}
实现 listView.SetImage(selectedImage)时,它将跳回ListViewController,并执行:
public void SetImage (UIImage image)
{
imageView4.Image = image; //imageView4 is a imageView defined in mainStoryboard
}
问题是:实施SetImage后应用程序将崩溃。信息显示未定义或处置的imageView4或ListViewController。但为什么?它们最初都是在mainStoryboard中创建的,何时处理?我怎么能避免这个?或者,我不应该只是跳回到viewController并改变它的外观而没有任何segue?
我会非常感谢您回答我的任何问题!谢谢!
答案 0 :(得分:0)
您必须在Image
中添加ListViewController
框。应该看起来像这样:
Image img = new Image();
img.Name = "myImage";
listView.Add.Children(img);
myImage.ItemSource = imageView4;
答案 1 :(得分:0)
在" viewDidLoad"之后将图像分配给UIImageView。您的控制器,属于UIImageView。
例如,您可以创建私有变量,并存储该图像,直到调用viewDidLoad方法。
private UIImage imageToShow;
public void SetImage (UIImage image)
{
this.imageToShow = image;
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
this.imageView4.Image = this.imageToShow;
}