名称'名称'在当前上下文中不存在

时间:2017-04-15 11:23:28

标签: c# ios xamarin

我目前正在做Xamarin.iOS教程,我似乎无法解决这个问题。

 translatedNumber = PhoneTranslator.ToNumber(PhoneNumberText.Text);

VS2015强调PhoneTranslator并给我以下错误: "当前上下文中没有名称PhoneTranslator"

ViewController类和PhoneTranslator类都使用相同的命名空间。我怎样才能解决这个问题?有什么建议吗?

在强行重启计算机后,它可以正常工作。不知道为什么它首先没有工作。

namespace Phoneword
{
    public static class PhoneTranslator
    {
        public static string ToNumber(string raw)
        {
            if (string.IsNullOrWhiteSpace(raw))
            {
                return "";
            }
            else
            {
                raw = raw.ToUpperInvariant();
            }

            var newNumber = new StringBuilder();
            foreach (var c in raw)
            {
                if (" -0123456789".Contains(c))
                {
                    newNumber.Append(c);
                }
                else
                {
                    var result = TranslateToNumber(c);
                    if (result != null)
                    {
                        newNumber.Append(result);
                    }
                }
                // otherwise we've skipped a non-numeric char
            }
            return newNumber.ToString();
        }

        static bool Contains(this string keyString, char c)
        {
            return keyString.IndexOf(c) >= 0;
        }

        static int? TranslateToNumber(char c)
        {
            if ("ABC".Contains(c))
            {
                return 2;
            }
            else if ("DEF".Contains(c))
            {
                return 3;
            }
            else if ("GHI".Contains(c))
            {
                return 4;
            }
            else if ("JKL".Contains(c))
            {
                return 5;
            }
            else if ("MNO".Contains(c))
            {
                return 6;
            }
            else if ("PQRS".Contains(c))
            {
                return 7;
            }
            else if ("TUV".Contains(c))
            {
                return 8;
            }
            else if ("WXYZ".Contains(c))
            {
                return 9;
            }
            return null;
        }
    }
}

namespace Phoneword {
    public partial class ViewController : UIViewController
    {
        public ViewController(IntPtr handle) : base(handle)
        {
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            // Perform any additional setup after loading the view, typically from a nib.
            string translatedNumber = "";

            TranslateButton.TouchUpInside += (object sender, EventArgs e) => {

                // Convert the phone number with text to a number
                // using PhoneTranslator.cs
                translatedNumber = PhoneTranslator.ToNumber(PhoneNumberText.Text);

                // Dismiss the keyboard if text field was tapped
                PhoneNumberText.ResignFirstResponder();

                if (translatedNumber == "")
                {
                    CallButton.SetTitle("Call", UIControlState.Normal);
                    CallButton.Enabled = false;
                }
                else
                {
                    CallButton.SetTitle("Call " + translatedNumber, UIControlState.Normal);
                    CallButton.Enabled = true;
                }
            };

            CallButton.TouchUpInside += (object sender, EventArgs e) => >
            {
                var url = new NSUrl("tel:" + translatedNumber);

                // Use URL handler with tel: prefix to invoke Apple's Phone app,
                // otherwise show an alert dialog

                if (!UIApplication.SharedApplication.OpenUrl(url))
                {
                    var alert = UIAlertController.Create("Not supported", "Scheme 'tel:' is not supported on this device", UIAlertControllerStyle.Alert);
                    alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                    PresentViewController(alert, true, null);
                }
            };
        }

        public override void DidReceiveMemoryWarning()
        {
            base.DidReceiveMemoryWarning();
            // Release any cached data, images, etc that aren't in use.
        }
    } }

2 个答案:

答案 0 :(得分:2)

我已将您的代码复制到我的visual studio 2015中,并没有抱怨PhoneTranslator。你把这两个班级放在同一个项目中了吗?如果您还没有意识到,可以在一个解决方案下创建多个项目。

这应该是一个评论,但我还没有足够的声誉发表评论:(

答案 1 :(得分:0)

您可能已经错过了步骤8的一部分,但我遇到了同样的错误。在我的情况下,添加文本字段的名称并保存Main.storyboard可以解决该错误。

步骤8说:
在设计图面上选择“文本字段”后,更改“标识”中的“文本字段”的“名称”属性 将“属性”部分更改为 PhoneNumberText ,然后将“文本”属性更改为“ 1-855-XAMARIN”: