【问题标题】:Refresh view in xamarin iOS在 xamarin iOS 中刷新视图
【发布时间】:2013-11-05 16:50:38
【问题描述】:

我是 Xamaring 和 iOS 的新手,但我正在尝试创建一个视图,当按下 UIBarButtonSystemItem.Add 时,它会向 SQLite 数据库添加一条记录,提醒用户,然后将屏幕刷新为屏幕在 SQLite 中为表中的每条记录绘制一个按钮。

目前添加按钮代码为:

this.NavigationItem.SetRightBarButtonItem(new UIBarButtonItem(UIBarButtonSystemItem.Add, (sender,args) => { 
    conn.Query<Job>("INSERT INTO Job (Job) VALUES(0)"); 
    UIAlertView alSQL = new UIAlertView("Jobs","New job added",null,"ok",null);AllJobsScreen(), true);
    alSQL.Show ();
}), true);

目前已添加数据并显示警报,但我不确定是否要让屏幕反映数据库中的这条新记录并添加新按钮。

我在网上寻找刷新屏幕但找不到任何东西,所以任何帮助都会很棒。或者,如果我以错误的方式处理此问题,请告诉我。

我正在屏幕上写出按钮,但理想情况下,我需要能够刷新带有任何内容的任何视图。目前,这些按钮是从 SQLite 查询中循环写入的,如下所示:

UIButton btnTest = new UIButton (UIButtonType.System);
btnTest.Frame = new RectangleF(iTopLeftx, iTopLefty, 300, 30);
btnTest.SetTitle("J00000" + s.mJobID.ToString(),UIControlState.Normal);
btnTest.BackgroundColor = UIColor.Clear;
this.View.Add (btnTest);

【问题讨论】:

  • 您必须使用 TableView 来显示记录,对吧?只需重新加载其中的数据。
  • 你能发布你的代码来设置屏幕上显示的内容吗?如果你没有使用UITableView,你应该在一个函数中只使用这段代码并在需要的地方调用它。
  • 添加了写出按钮的代码。如果这还不够详细,请告诉我。我不想在那里放太多。理想情况下,我需要一种在用户离开视图后立即处理视图的方法,以便当他们再次导航到它时,它会从头开始重新创建它。谢谢。

标签: ios xamarin.ios xamarin


【解决方案1】:

尝试更改新创建的UIButtons 的TitleColorBorderColorBorderWidth。也许您的按钮显示在视图上,但您看不到它们。

UIButton btnTest = UIButton.FromType(UIButtonType.Custom);
btnTest.Frame = new RectangleF(iTopLeftx, iTopLefty, 300, 30);
btnTest.SetTitle("J00000" + s.mJobID.ToString(), UIControlState.Normal);
btnTest.SetTitleColor(UIColor.Black, UIControlState.Normal);
btnTest.Layer.BorderColor = UIColor.Black.CGColor;
btnTest.Layer.BorderWidth = 1;
btnTest.BackgroundColor = UIColor.Clear;
this.View.Add(btnTest);

编辑

那么问题似乎是你没有删除之前添加的UIButtons。尝试将您的 UIButtons 集合保存在列表或数组中。

List&lt;UIButton&gt; buttonList;

然后填写您的buttonList:

private void PopulateSubviews()
{
    for (int i=0; i<count; i++)
    {
        UIButton btnTest = UIButton.FromType(UIButtonType.Custom);
        // previous code withoud this.View.Add(...);
        ...
        buttonList.Add(btnTest);
    }
}

并且有这两种方法:

private void ClearView()
{
    foreach (UIButton btn in buttonList)
    {
        btn.RemoveFromSuperview();
    }

    buttonList.Clear();
}

private void InitializeSubviews()
{
    foreach (UIButton btn in buttonList)
    {
        this.View.AddSubview(btn);
    }
}

并刷新您的观点:

private void ReloadSubviews()
{
    ClearView();
    PopulateSubviews();
    InitializeSubviews();
}

【讨论】:

  • 感谢您的回复。它们在屏幕上看起来很好,但是如果我更改数据,离开页面,然后返回页面,它仍然显示具有相同按钮的相同屏幕,我不知道如何更新重新显示的内容- 进入屏幕。
猜你喜欢
  • 2015-01-08
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
相关资源
最近更新 更多