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

編集

次に、以前に追加した s を削除しなかったことが問題のようですUIButton。のコレクションをUIButtonリストまたは配列に保持してみてください。

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

そして、これらの2つの方法があります:

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 に答える