【问题标题】:Reload UIViewController and xib重新加载 UIViewController 和 xib
【发布时间】:2011-04-01 16:58:49
【问题描述】:

我有一个应用,它的 MyViewController 有两个子类,MyViewControllerMain 和 MyViewControllerSettings。

在 MyViewControllerSettings 中,我允许用户更改字体、颜色等。如何指示 MyViewControllerMain 刷新自身以显示更改?

谢谢, 托尼

这是我正在做的事情:

I initialize it in viewDidLoad of my superclass like this:

m_fFontSize = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 28 : 16;
m_MyFont = [UIFont fontWithName:@"Greg's Hand" size:m_fFontSize];

然后在派生设置类中,我这样做:

NSString * sFont = [fontList objectAtIndex:row];
m_MyFont = [UIFont fontWithName:sFont size:m_fFontSize];

在 viewWillAppear 的衍生 MainView 类中,我这样做:

tfName.font = m_MyFont;

【问题讨论】:

    标签: iphone ipad ios4 xcode4


    【解决方案1】:

    这取决于 - 如果您的 MyViewControllerMain 中有 UILabel、UIButton 等,并且您更改了它们的字体/颜色,它们应该自行更新(确保您确实设置了字体,颜色等!)。

    否则,您可以随时尝试[[myViewController view] setNeedsDisplay]

    【讨论】:

      【解决方案2】:

      为此,您需要使用您的设置重新绘制整个视图。

      对于每个&每次,方法名称:

      -(void)viewWillAppear:(BOOL)animated
      {
              [super viewWillAppear:animated];
      
                 //Over here just set the font size of all the controllers you are using.
                  This will definitely solve your problem since this method is called every time before the View Appears.
          }
      

      【讨论】:

      • 阿杰,我试过了,但似乎没有用。我的字体有一个成员变量,在设置页面中我将该成员变量更改为新字体。当我返回主页时,确实会调用 viewWillAppear 并且我正在执行:textField.font = m_MyFont,但它不会更改字体。有什么想法吗?
      • 您的成员变量 m_MyFont 是否保留更新后的值???只是尝试在 ViewWillAppear 中打印 & 还有一件事请确保您没有在其他任何地方设置字体大小..在同一类中.
      猜你喜欢
      • 2019-04-20
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多