CS1061 error Xamarin/Visual Studio



我正在尝试运行从这里下载的一些源代码

这基本上是一个应用程序,将允许用户管理联系人和日历约会等。

我目前遇到3个错误,所有看似相关的…

CS1061 - UIImageView不包含'SetImage'的定义,没有扩展方法'SetImage'接受类型'UIImageView'的第一个参数可以找到(你是否缺少使用指令或汇编引用?)

似乎SetImage没有在某个地方定义?有人能告诉我我需要做什么来解决这个错误。我把我的代码贴在下面…

using System;
using Foundation;
using UIKit;
using System.CodeDom.Compiler;
using MessageUI;
using Microsoft.Office365.OutlookServices;
using FiveMinuteMeeting.Shared.ViewModels;
using CoreGraphics;
using FiveMinuteMeeting.Shared;

namespace FiveMinuteMeeting.iOS
{
  partial class ContactDetailViewController : UIViewController
  {
    public ContactDetailViewController(IntPtr handle)
  : base(handle)
{
}
public DetailsViewModel ViewModel
{
  get;
  set;
}

UIBarButtonItem save;
public override void ViewDidLoad()
{
   base.ViewDidLoad();
   NavigationController.NavigationBar.BarStyle = UIBarStyle.Black;
   save = new UIBarButtonItem(UIBarButtonSystemItem.Save,
    async (sender, args) =>
   {
     ViewModel.FirstName = TextFirst.Text.Trim();
     ViewModel.LastName = TextLast.Text.Trim();
     ViewModel.Email = TextEmail.Text.Trim();
     ViewModel.Phone = TextPhone.Text.Trim();
     //BigTed.BTProgressHUD.Show("Saving contact...");
     await ViewModel.SaveContact();
     //BigTed.BTProgressHUD.Dismiss();
     NavigationController.PopToRootViewController(true);
   });

   TextEmail.ShouldReturn += ShouldReturn;
   TextFirst.ShouldReturn += ShouldReturn;
   TextPhone.ShouldReturn += ShouldReturn;
   TextLast.ShouldReturn += ShouldReturn;
   TextEmail.ValueChanged += (sender, args) =>
     {
       ImagePhoto.SetImage(
      url: new NSUrl(Gravatar.GetURL(TextEmail.Text, 172)),
      placeholder: UIImage.FromBundle("missing.png")
      );
     };
   var color = new CGColor(17.0F / 255.0F, 113.0F / 255.0F, 197.0F / 255F);
   TextEmail.Layer.BorderColor = color;
   TextFirst.Layer.BorderColor = color;
   TextPhone.Layer.BorderColor = color;
   TextLast.Layer.BorderColor = color;

   ButtonCall.Clicked += (sender, args) => PlaceCall();
   NSNotificationCenter.DefaultCenter.AddObserver
    (UIKeyboard.DidShowNotification, KeyBoardUpNotification);
   // Keyboard Down
   NSNotificationCenter.DefaultCenter.AddObserver
   (UIKeyboard.WillHideNotification, KeyBoardDownNotification);
   double min = Math.Min((float)ImagePhoto.Frame.Width, (float)ImagePhoto.Frame.Height);
   ImagePhoto.Layer.CornerRadius = (float)(min / 2.0);
   ImagePhoto.Layer.MasksToBounds = false;
   ImagePhoto.Layer.BorderColor = new CGColor(1, 1, 1);
   ImagePhoto.Layer.BorderWidth = 3;
   ImagePhoto.ClipsToBounds = true;
}
public override void ViewWillAppear(bool animated)
{
  base.ViewWillAppear(animated);
  if (ViewModel == null)
  {
    ViewModel = new DetailsViewModel();
    NavigationItem.RightBarButtonItem = save;
  }
  else
  {
    this.Title = ViewModel.FirstName;
    TextEmail.Text = ViewModel.Email;
    TextFirst.Text = ViewModel.FirstName;
    TextLast.Text = ViewModel.LastName;
    TextPhone.Text = ViewModel.Phone;
    ImagePhoto.SetImage(
        url: new NSUrl(Gravatar.GetURL(ViewModel.Contact.EmailAddresses[0].Address, 172)),
        placeholder: UIImage.FromBundle("missing.png")
    );

    NavigationItem.RightBarButtonItem = null;
  }
}
private bool ShouldReturn(UITextField field)
{
  field.ResignFirstResponder();
  return true;
}
private void PlaceCall()
{
  var alertPrompt = new UIAlertView("Dial Number?",
      "Do you want to call " + TextPhone.Text + "?",
      null, "No", "Yes");
  alertPrompt.Dismissed += (sender, e) =>
  {
    if ((int)e.ButtonIndex >= (int)alertPrompt.FirstOtherButtonIndex)
    {
      var url = new NSUrl("tel:" + TextPhone.Text);
      if (!UIApplication.SharedApplication.OpenUrl(url))
      {
        var av = new UIAlertView("Not supported",
          "Scheme 'tel:' is not supported on this device",
          null,
          "OK",
          null);
        av.Show();
      }
      else
      {
        UIApplication.SharedApplication.OpenUrl(url);
      }
    }
  };
  alertPrompt.Show();
}

/*private async void SendEmail()
{
  var mailController = new MFMailComposeViewController();
  mailController.SetToRecipients(new string[] { TextEmail.Text });
  mailController.SetSubject("5 Minute Meeting");
  mailController.SetMessageBody("We are having a 5 minute stand up tomorrow at this time! Check your calendar.", false);
  mailController.Finished += (object s, MFComposeResultEventArgs args) =>
  {
    Console.WriteLine(args.Result.ToString());
    args.Controller.DismissViewController(true, (Action)null);
  };
  PresentViewControllerAsync(mailController, true);
}*/
public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
{
  switch(segue.Identifier)
  {
    case "email":
      {
        var vc = segue.DestinationViewController as SendEmailViewController;
        vc.ViewModel.FirstName = ViewModel.FirstName;
        vc.ViewModel.LastName = ViewModel.LastName;
        vc.ViewModel.Email = ViewModel.Email;
      }
      break;
    case "meeting":
      {
        var vc = segue.DestinationViewController as NewEventDurationViewController;
        vc.ViewModel.FirstName = ViewModel.FirstName;
        vc.ViewModel.LastName = ViewModel.LastName;
        vc.ViewModel.Email = ViewModel.Email;
      }
      break;
  }
}


#region Keyboard
private UIView activeview;             // Controller that activated the keyboard
private float scrollamount;    // amount to scroll 
private float bottom;           // bottom point
private const float Offset = 68.0f; // extra offset
private bool moveViewUp;           // which direction are we moving

private void KeyBoardDownNotification(NSNotification notification)
{
  if (moveViewUp) { ScrollTheView(false); }
}
private void ScrollTheView(bool move)
{
  // scroll the view up or down
  UIView.BeginAnimations(string.Empty, System.IntPtr.Zero);
  UIView.SetAnimationDuration(0.3);
  CGRect frame = (CGRect)View.Frame;
  if (move)
  {
    frame.Y -= scrollamount;
  }
  else
  {
    frame.Y += scrollamount;
    scrollamount = 0;
  }
  View.Frame = frame;
  UIView.CommitAnimations();
}
private void KeyBoardUpNotification(NSNotification notification)
{
  // get the keyboard size
  var r = (CGRect)UIKeyboard.FrameBeginFromNotification((NSNotification)notification);

  // Find what opened the keyboard
  foreach (UIView view in this.View.Subviews)
  {
    if (view.IsFirstResponder)
      activeview = view;
  }
  // Bottom of the controller = initial position + height + offset      
  bottom = ((float)activeview.Frame.Y + (float)activeview.Frame.Height + Offset);
  // Calculate how far we need to scroll
  scrollamount = ((float)r.Height - ((float)View.Frame.Size.Height - bottom));
  // Perform the scrolling
  if (scrollamount > 0)
  {
    moveViewUp = true;
    ScrollTheView(moveViewUp);
  }
  else
  {
    moveViewUp = false;
  }
}
#endregion
}
}

我是Xamarin的新手& &;我只是想运行这个,因为它是一个非常相似的项目,我正在创建的。

谢谢你的帮助

SetImage是包含在Xamarin.SDWebImage中的扩展方法。确保您已经恢复了所有的nuget包,或者已经通过

安装了它。

安装包Xamarin的。SDWebImage

见:https://www.nuget.org/packages/Xamarin.SDWebImage/

错误解释如下:

https://msdn.microsoft.com/en-us/library/bb383961.aspx

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''CS1061 - UIImageView不包含'SetImage'的定义,没有扩展方法'SetImage'接受类型'UIImageView'的第一个参数可以找到(你是否缺少使用指令或汇编引用?)

在你的代码中,我没有看到ImagePhoto检查的声明右键点击进入定义。验证imagePhoto是否存在一个方法setImage imagePhoto我假设它是UIImage

类型的对象
   ImagePhoto.SetImage(
      url: new NSUrl(Gravatar.GetURL(TextEmail.Text, 172)),
      placeholder: UIImage.FromBundle("missing.png")
      );

最新更新