【问题标题】:Cannot change the title of the cancel button in the UISearchBar无法更改 UISearchBar 中取消按钮的标题
【发布时间】:2013-02-28 09:40:31
【问题描述】:

我想使用 MonoTouch 更改 UISearchBar 的取消按钮的标题。 是的,我看过这个“hack”,但我更喜欢更优雅的方式。我正在尝试使用:

UIButton.AppearanceWhenContainedIn(typeof(UISearchBar)).SetTitle("xxxx");

它应该在objective-c中工作,但在MonoTouch中我得到以下错误

消息:错误 CS1061:类型 MonoTouch.UIKit.UIButton.UIButtonAppearance' does not contain a definition forSetTitle' 和没有扩展方法 SetTitle' of type MonoTouch.UIKit.UIButton.UIButtonAppearance' 可以找到(你是 缺少 using 指令或程序集引用?)

我正在使用 Xamarin Studio 版本。 4.0

【问题讨论】:

标签: ios uibutton uiappearance xamarin.ios


【解决方案1】:

这是 hackish - Objective-C 代码之所以有效,是因为 UIAppearancecurrent 实现使用了代理对象。 IOW Apple 没有承诺保持实现相同,并且没有记录该特定功能。

既然您已经意识到这一点,并且如果您仍想将它与 Xamarin.iOS 一起使用,那么您可以使用我在此 Q&A 中描述的 hack 来完成它。这将允许您在 UIAppearance 代理上使用任何 UIButton API。

【讨论】:

    【解决方案2】:

    为什么不使用更轻量级的 hack?

        public static void SetSearchBarCancelButtonTitle (UISearchBar sb, string title)
        {
            foreach (var subview in sb.Subviews)
                if (subview is UIButton)
                    (subview as UIButton).SetTitle (title, UIControlState.Normal);
        }
    

    【讨论】:

      【解决方案3】:

      UIButton 不再是 UISearchBar 的直接子视图。你必须像下面这样递归,直到找到它:

              public static bool SetButton(UIView parentView, string title, UIColor tint)
              {
                  foreach (var sub in parentView.Subviews)
                  {
                      if (sub is UIButton)
                      {
                          (sub as UIButton).SetTitle(title, UIControlState.Normal);
                          (sub as UIButton).SetTitleColor(tint, UIControlState.Normal);
                          return true;
                      }
      
                      if (SetButton(sub, title, tint))
                          return true;
                  }
      
                  return false;
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多