MonoTouch中的button问题

我正在和MonoTouch合作,我想出了三个关于button的问题,希望有人能帮助我。

  1. 我试图改变标题栏中的“返回”button。 我该怎么做呢? 我已经看到线程在这里发布: 如何更改后退button上的文本 。 但是,这是行不通的。 我得到的氛围,我不访问控制器属性。 目前,当我尝试在ViewDidLoad方法中设置button文本时,我收到一个NullReferenceExceptionexception。 目前,我试图设置这样的文字:

    this.NavigationItem.BackBarButtonItem.Title =“Back”;

    我有怀疑,我没有访问根控制器,但我不知道如何做到这一点。

  2. 对于单独页面上的“后退”button,我想执行自定义操作。 我希望它像它一样回去。 但在此之前,我想执行一些自定义代码。 我该怎么做呢?

  3. 我需要创build一个文本段落内的超链接。 我怎么做?

MonoTouch看起来很酷。 然而,学习曲线比我预期的要更陡。 谢谢!

对于你的第一个问题,MonoTouch特定的答案 (对你提供的问题)是完美的。

this.NavigationItem.BackBarButtonItem = new UIBarButtonItem ("MyBack", UIBarButtonItemStyle.Plain, null); 

确保所有的答案。 这个代码需要在推送控制器中被调用,而不是被推动的控制器。

UPDATE

对于你的第二个问题,你可能会注意到一些需要Selectordelegate重载。 但是,它们不适用于“ 后退”button。

解决此iOS限制的一种方法是重写ViewDidAppearViewDidDisappear以获得类似的通知。

我通过在viewbuilder中创build一个自定义button来解决你的第三个问题。 将types设置为自定义将删除标准边界,并使其看起来像一行文本。 只需更改其大小和样式,使其看起来更像一个超链接。 我在文本中留下了一个空白的空间,并将自定义button放在该空间中。

我创build了一个扩展方法,允许您更改后退button文本,并select使用自己的代码处理TouchUp操作。 它也保持与默认后退button相同的边框外观。

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