0

我是 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);
4

1 回答 1

0

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

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);

编辑

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

List<UIButton> 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();
}
于 2013-11-04T11:27:19.680 回答