C# xamarin ios标签问题
我对编程相当陌生,所以我希望这是一个非常简单的错误。我使用visual studio在xamarin ios应用程序中创建了一个C# xamarin ios标签问题,c#,ios,xamarin,uilabel,C#,Ios,Xamarin,Uilabel,我对编程相当陌生,所以我希望这是一个非常简单的错误。我使用visual studio在xamarin ios应用程序中创建了一个UILabel,我希望每30秒用新数据更新一次。我已经把它更新了,但不是只更新标签上的新号码,我把新号码放在我以前的号码之上,但运行了几次之后,它就不可读了。如何使其仅在UILabe中获取我的int的新值 我的代码如下 int mytest = 0; private async Task RefreshAsync() { whil
UILabel
,我希望每30秒用新数据更新一次。我已经把它更新了,但不是只更新标签上的新号码,我把新号码放在我以前的号码之上,但运行了几次之后,它就不可读了。如何使其仅在UILabe
中获取我的int
的新值
我的代码如下
int mytest = 0;
private async Task RefreshAsync()
{
while (0 == 0)
{
mytest++;
var t1label = new UILabel(new RectangleF(10, 10, 200, 100));
t1label.Text = mytest.ToString();
View.Add(t1label);
t1label.Font = UIFont.SystemFontOfSize(25);
await Task.Delay(30000);
}
}
您将在循环的每个迭代中创建一个新标签,然后将其分层到现有标签的顶部。相反,您只需创建一次标签,并仅更新其值:
int mytest = 0;
// create the label outside of the loop
var t1label = new UILabel(new RectangleF(10, 10, 200, 100));
t1label.Text = mytest.ToString();
View.Add(t1label);
t1label.Font = UIFont.SystemFontOfSize(25);
private async Task RefreshAsync()
{
while (0 == 0)
{
mytest++;
t1label.Text = mytest.ToString();
await Task.Delay(30000);
}
}
每次循环运行时,您都会创建整个
UILabel
。这就是它在屏幕上出现多次的原因
在循环外部创建标签,并仅刷新循环内部的文本
属性。例如:
int mytest = 0;
private async Task RefreshAsync()
{
var t1label = new UILabel(new RectangleF(10, 10, 200, 100));
View.Add(t1label);
t1label.Font = UIFont.SystemFontOfSize(25);
while (true)
{
t1label.Text = mytest.ToString();
mytest++;
await Task.Delay(30000);
}
}
进一步资料:
您可以通过在不同的线程中更新标签的文本来更改UI。这可能会引起问题。您应该始终在主线程上执行UI更新代码。所以最好换一条线
t1label.Text = mytest.ToString();
到
阅读以了解更多信息。我正试图按照您上面的建议去做,但当我这样做时,我会遇到很多错误。主要是在创建标签时使用var。它有一个错误“上下文关键字'var'可能只出现在局部变量声明或脚本代码中”我是否遗漏了一些简单的内容?有可能创建一个公共标签吗?只需显式地将其声明为标签,而不是使用varI。我希望这是我的最后一个问题:如何将其添加到视图中?view.add(t1label)在这种情况下不起作用,因为它不在类中。我非常感谢你的帮助!我得到的错误是“名称'View.add'在当前上下文中不存在”。然后将对视图的引用传递到执行更新的方法中。我遇到了相同的问题。必须在while循环之前初始化标签。
InvokeOnMainThread(() => t1label.Text = mytest.ToString());