重新加载UIViewController和xib

问题描述:

我有一个应用程序有一个MyViewController与两个子类MyViewControllerMain和MyViewControllerSettings。重新加载UIViewController和xib

在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]; 

在我dervied的MainView类在viewWillAppear,我这样做:

tfName.font = m_MyFont; 

这取决于 - 如果你的MyViewControllerMain中有一个UILabel,UIButton或类似的东西,并且你改变了他们的字体/颜色,他们应该更新自己(确保你真的设置了字体,颜色等!)。 。您可以随时尝试[[myViewController view] setNeedsDisplay]

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

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

-(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. 
    } 
+0

阿贾伊,我试过了,它似乎并没有工作。我有一个成员变量与我的字体,并在设置页面我将该成员变量更改为新的字体。当我回到主页viewWillAppear不会被调用,我正在执行:textField.font = m_MyFont,但它不会更改字体。有任何想法吗? – LilMoke 2011-04-01 18:04:01

+0

你的成员变量m_MyFont是否保留更新后的值?只要尝试在ViewWillAppear中打印另一件事情,请确保你没有将字体大小设置在其他地方。 – 2011-04-01 18:23:11

+0

请参阅原文中的编辑。 – LilMoke 2011-04-01 18:30:08