我有两个ViewController(ViewController A,ViewController B)。两者都是UITableviewController
。
在ViewController A中,我从数据库中获取数据并将其放入List<string>
,以便可以显示它。
我有一个导航栏按钮可转到ViewControllerB。在ViewController B中,我具有带有其他项的列表。我可以通过滑动操作将其他项目添加到数据库中。这行得通。
当我回到ViewController A时,我想更新我的列表,但是我不知道如何:(
我用ViewDidAppear
进行了尝试,但是它不起作用。
ViewController A:
public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
NavigationItem.Title = "Anwendungsfälle";
// Hier geht es zum Hinzufügen der Anwendungsfeleder / -fälle oder Maßnahmen zum bestehenden Katalog
this.NavigationItem.SetRightBarButtonItem(
new UIBarButtonItem(UIBarButtonSystemItem.Add,
(sender, args) =>
{
var alertController = UIAlertController.Create("Anwendungsfeld hinzufügen", "Wählen Sie eine Option aus", UIAlertControllerStyle.ActionSheet);
// Hier geht es zur Vorgefertigten Bibliothek
alertController.AddAction(UIAlertAction.Create("Aus Bibliothek hinzufügen", UIAlertActionStyle.Default, (Action) =>
{
AddAnFaViewController controller = this.Storyboard.InstantiateViewController("AddAnFaViewController") as AddAnFaViewController;
controller.firmabereich = firmabereich;
controller.bereich = bereich;
controller.zieleid = zieleid;
controller.idafe = idafe;
this.NavigationController.PushViewController(controller, true);
}));
// Abbrechen Knopf
alertController.AddAction(UIAlertAction.Create("Abbrechen", UIAlertActionStyle.Cancel, alert => Console.WriteLine("Cancel clicked")));
PresentViewController(alertController, true, null);
}),
true);
var lines = new List<string>();
using (MySqlConnection connection = new MySqlConnection("Server=xxxx;Port=3306;database=xxxxb;User Id=xxxxx;Password=xxxx;charset=utf8"))
{
string query = $"SELECT DISTINCT Anwendungsfall FROM {firmabereich} WHERE IDAFE LIKE '{idafe}' ORDER BY Anwendungsfall ASC";
string query2 = $"SELECT DISTINCT IDAFA FROM {firmabereich} WHERE IDAFE LIKE '{idafe}' ORDER BY Anwendungsfall ASC";
string query3 = $"SELECT DISTINCT PrioAnFa, Anwendungsfall FROM {firmabereich} WHERE IDAFE LIKE '{idafe}' ORDER BY Anwendungsfall ASC";
MySqlCommand command = new MySqlCommand(query, connection);
MySqlCommand command2 = new MySqlCommand(query2, connection);
MySqlCommand command3 = new MySqlCommand(query3, connection);
connection.Open();
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
anwendungsfälle.Add(reader.GetString(0));
}
}
using (MySqlDataReader reader = command2.ExecuteReader())
{
while (reader.Read())
{
anwendungsfälleid.Add(reader.GetString(0));
}
}
using (MySqlDataReader reader = command3.ExecuteReader())
{
while (reader.Read())
{
prio.Add(reader.GetString(0));
}
}
}
TableView.RowHeight = UITableView.AutomaticDimension;
TableView.EstimatedRowHeight = 40f;
TableView.ReloadData();
}
答案 0 :(得分:0)
由于重新加载数据会直接影响用户界面,因此您需要在GCD中重新加载数据。
DispatchQueue.main.async {
TableView.ReloadData();
}
GCD是Apple的多线程概念;因此,请花一些时间了解它在整个应用程序生命周期中如何工作。