繁体   English   中英

CS1061错误Xamarin / Visual Studio

[英]CS1061 error Xamarin/Visual Studio

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

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

我目前遇到3个错误,似乎都与之相关...

CS1061-UIImageView不包含'SetImage'的定义,并且找不到扩展方法'SetImage'接受类型为'UIImageView'的第一个参数(您是否缺少using指令或程序集引用?)

似乎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和应用程序开发非常陌生,我只想运行它,因为它与我正在创建的项目非常相似。

谢谢你的帮助

SetImageXamarin.SDWebImage包含的扩展方法。 确保您已还原所有nuget软件包或已通过安装

安装包Xamarin.SDWebImage

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

这里是错误的解释。

https://msdn.microsoft.com/zh-CN/library/bb383961.aspx

'''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''CS1061-UIImageView不包含'SetImage'的定义,并且扩展方法'SetImage'不能接受类型为'UIImageView'的第一个参数被找到(您是否缺少using指令或程序集引用?)

在您的代码中,我没有看到ImagePhoto声明的声明,请右键单击goto定义。 并验证对于imagePhoto是否存在方法setImage ImagePhoto我假设它是UIImage类型的对象

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM