gpt4 book ai didi

c# - 更新 Monotouch.Dialog RootElement

转载 作者:行者123 更新时间:2023-11-29 04:19:00 25 4
gpt4 key购买 nike

我一直在关注 monotouch.dialog 任务示例应用程序 (http://docs.xamarin.com/ios/Guides/User_Interface/MonoTouch.Dialog/Elements_API_Walkthrough) 中的代码。

我似乎无法解决的问题是,当用户单击+按钮时,表中会添加一个新行。用户触摸此按钮并导航到可以输入信息的另一个屏幕。现在,当他们导航回 Root View 时,我希望更新 rootElements 列表,以便使用输入的名称而不是默认名称“连接”

我如何根据输入的内容更新每个 RootElements 的文本?

我希望一切都有意义!

-- 代码如下。

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
window = new UIWindow (UIScreen.MainScreen.Bounds);

RootElement _rootElement = new RootElement ("To Do List"){ new Section()};

DialogViewController _rootVC = new DialogViewController (_rootElement);

// This adds an 'add' button to the root view controller, and handles by delegate,the push to a screen where you can add a new vCenter connection profile.
UIBarButtonItem _addButton = new UIBarButtonItem (UIBarButtonSystemItem.Add);
_rootVC.NavigationItem.RightBarButtonItem = _addButton;

_addButton.Clicked += (sender, e) => {
var connectionProfile = new connectionProfile{};
// See, on the line below, I add a default RootElement with the text New Connection.

var connectionProfileElements = new RootElement ("New Connection") {
new Section () {
// When they enter the name on the next line of code, I want to use this to update the New Connection text on the root screen.
new EntryElement ("Name", "Enter Connection Name", connectionProfile._connectionName),
new EntryElement ("VC Address", "Enter VC Address", connectionProfile._address),
new EntryElement ("VC Port", "Enter VC Port", connectionProfile._port),
new EntryElement ("Username", "Enter Username", connectionProfile._userID),
new EntryElement ("Password", "Enter Password", connectionProfile._password,true)}
};
_rootElement [0].Add (connectionProfileElements);
};

UINavigationController _nav = new UINavigationController (_rootVC);
window.RootViewController = _nav;
window.MakeKeyAndVisible ();

return true;
}
}

还有:

public class connectionProfile
{
public connectionProfile ()
{
}

public string _connectionName { get; set; }
public string _address { get; set; }
public string _port { get; set; }
public string _userID {get; set; }
public string _password { get; set; }
}

最佳答案

您是否尝试过 this.ReloadData(); 像这样?

public NameOfYourDialogViewController() : base (UITableViewStyle.Grouped, null)
{
Root = new RootElement ("test") {
new Section ("First Section"){
new StringElement ("Hello", () => {
new UIAlertView ("Hola", "Thanks for tapping!", null, "Continue").Show ();
}),
new EntryElement ("Name", "Enter your name", String.Empty)
},
new Section ("Second Section"){
},
};
}
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
// Do your stuff
}

public override void ViewWillAppear (bool animated)
{
base.ViewWillAppear (animated);
this.ReloadData();
}

您可以找到与此相关的其他主题 here .

编辑

你忘了说它位于你的 AppDelegate 中,它不是为你正在做的事情而设计的。

首先,创建一个DialogViewController:项目>添加新文件> MonoTouch>DialogViewController。在我之前提到的不同方法中,放置 ReloadData() 方法。这些方法(ViewDidLoad、WillAppear 等)是 UIView 的重写方法。AppDelegate 的存在是为了在启动之前获取数据、为应用程序存储静态数据等等。这是完全不同的用法。

对于您的 AppDelegate,您应该有这样的示例:

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
_window = new UIWindow (UIScreen.MainScreen.Bounds);
_controller = new NameOfYourDialogViewController();

_navigationController = new UINavigationController (_controller);

UIImageView splash = new UIImageView(_window.Bounds);
splash.Image = UIImage.FromFile("Default.png");

_window.AddSubview(splash);
_window.AddSubview(_navigationController.View);
_window.BringSubviewToFront(splash);

_window.MakeKeyAndVisible ();

// This is used to create a fadding effect in your splashscreen
UIView.Animate(1,
delegate { splash.Alpha = 0f; },
delegate {
_window.RootViewController = _navigationController;
splash.RemoveFromSuperview();
});
return true;
}

关于c# - 更新 Monotouch.Dialog RootElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13267573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com