我目前正在做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.
}
} }
答案 0 :(得分:2)
我已将您的代码复制到我的visual studio 2015中,并没有抱怨PhoneTranslator
。你把这两个班级放在同一个项目中了吗?如果您还没有意识到,可以在一个解决方案下创建多个项目。
这应该是一个评论,但我还没有足够的声誉发表评论:(
答案 1 :(得分:0)
您可能已经错过了步骤8的一部分,但我遇到了同样的错误。在我的情况下,添加文本字段的名称并保存Main.storyboard可以解决该错误。
步骤8说:
在设计图面上选择“文本字段”后,更改“标识”中的“文本字段”的“名称”属性
将“属性”部分更改为 PhoneNumberText ,然后将“文本”属性更改为“ 1-855-XAMARIN”: