我正在使用MonoTouch,我提出了三个关于按钮的问题,我希望有人可以帮助我。
我正在尝试更改标题栏中的“后退”按钮。我该怎么做呢?我在这里发布了帖子:How to change text on a back button。但是,这不起作用。我得到了我没有访问控制器属性的氛围。目前,当我尝试在ViewDidLoad方法中设置按钮文本时,我收到NullReferenceException。目前,我正在尝试设置文本:
this.NavigationItem.BackBarButtonItem.Title =“Back”;
我怀疑我没有访问根控制器,但我不知道该怎么做。
对于单独页面上的“后退”按钮,我想执行自定义操作。我希望它像它一样回去。但在此之前,我想执行一些自定义代码。我该怎么做?
我需要在文本段落中创建看起来像超链接的东西。我该怎么做?
MonoTouch看起来很酷。然而,学习曲线比我预期的要陡峭得多。谢谢!
答案 0 :(得分:2)
对于您的第一个问题,特定于MonoTouch的answer(对您提供的问题)运作良好。
this.NavigationItem.BackBarButtonItem = new UIBarButtonItem ("MyBack", UIBarButtonItemStyle.Plain, null);
确保全部答案。此代码需要在推送控制器中调用,而不是推送的控制器。
<强>更新强>
对于您的第二个问题,您可能会注意到一些需要Selector
或delegate
的重载。但是他们won't work用于后退按钮。
解决此iOS限制的一种方法是覆盖ViewDidAppear
或ViewDidDisappear
以获得类似的通知。
答案 1 :(得分:0)
我通过在de viewbuilder中创建自定义按钮解决了第三个问题。将类型设置为自定义会删除标准边框并使其看起来像一行文本。只需更改其大小和样式,使其看起来更像一个超链接。我在文本中留下了一个空白区域,并将自定义按钮放在该空间中。
答案 2 :(得分:0)
我创建了一个扩展方法,允许您更改后退按钮文本,并可选择使用您自己的代码处理TouchUp操作。它还保持与默认后退按钮相同的边框外观。
public static class MyExtensions
{
public static void SetCustomBackButton(this UIViewController uiViewController, string buttonText, Action onClick)
{
uiViewController.NavigationItem.HidesBackButton = true;
var dummyButton = UIButton.FromType (UIButtonType.Custom);
var backButton = (UIButton)MonoTouch.ObjCRuntime.Runtime.GetNSObject (
MonoTouch.ObjCRuntime.Messaging.IntPtr_objc_msgSend_int (
dummyButton.ClassHandle, MonoTouch.ObjCRuntime.Selector.GetHandle ("buttonWithType:"), 101));
backButton.SetTitle (buttonText, UIControlState.Normal);
backButton.TouchUpInside += delegate {
if (onClick != null)
onClick ();
else
uiViewController.NavigationController.PopViewControllerAnimated (true);
};
uiViewController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem (backButton);
}
}