2016-08-16 90 views
0

我试图跑,我从hereCS1061错误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 &应用开发,我只是想跑这一点,因为这是一个非常类似的项目,一个是我创造。

感谢您的帮助

回答

1

这里是错误的解释。

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

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

在你的代码中,我没有看到ImagePhoto检查右键点击goto定义的声明。并验证imagePhoto存在的方法setImage ImagePhoto我asumming,类型为对象的UIImage

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

SetImage是包含在Xamarin.SDWebImage一个扩展方法。确保,您已经恢复了全部的NuGet包或已通过

安装了它安装,包装Xamarin.SDWebImage

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

+0

谢谢,安装NuGet包解决问题 – Chris

+0

然后请接受答案,以便该问题不会出现在未答复的部分。谢谢。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –