2016-08-16 4 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

'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''» CS1161 - 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 или установили его с помощью

Install-Package 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 –

Смежные вопросы