0

我正在使用 Xcode 4.5,针对 iOS5 及更高版本。我有一个弹出框,允许用户更改底层视图的字体。点击字体时,不会发生更改,直到我关闭弹出窗口和下级视图并重新打开。它是为委派而设置的。并且接收视图确实导入了FontsPopoverViewDelegate. 任何对解决方案的帮助将不胜感激。

字体的委托方法:

@protocol FontsPopoverViewDelegate <NSObject>
- (void)fontResize:(float)size forView:(int)type;
- (void)font:(int)fontID forView:(int)fView;
- (int)getFontForView:(int)fView;
- (float)getFontSizeForView:(int)fView;
@end

在底层视图中实现的方法:

- (void)fontResize:(float)size forView:(int)type {
  fontSizes[type] = size;
  [self invalidate];
}

- (void)font:(int)fontID forView:(int)fView {
  fontIds[fView] = fontID;
  [self invalidate];
}

- (int)getFontForView:(int)fView {
  return fontIds[fView];
  [self invalidate];
}

- (float)getFontSizeForView:(int)fView {
  return fontSizes[fView];
  [self invalidate]; // added to spark a reaction from the view
}

-(void) invalidate {
  NSLog(@"Invalidate called");
  [self saveTextChanges];
  [self refreshBodyText];
  [self refreshBackground];
  [self refreshBodyText];
  [self refreshDateFont];
  [self refreshTitleFont];
}

任何帮助将不胜感激。

4

1 回答 1

0

我通过将字体弹出框的通知发布到底层视图来解决这个问题。在底层视图中,我添加了调用... [self viewWillAppear:YES];

现在,它运行良好。

我在字体弹出框中有一个滑块,可以更改大小和通知,并且在通知中调用 viewWillAppear 与字体更改的工作方式相同。

- (void)aFontChanged:(NSNotification *)notification
{
    NSLog(@"aFontChanged notification?");
    [self viewWillAppear:YES];
    [self refreshBodyText];
    [self refreshDateFont];
    [self refreshTitleFont];
}

- (void)aFontSizeChanged:(NSNotification *)notification
{
    NSLog(@"aFontSizeChanged notification?");
    [self viewWillAppear:YES];
    [self refreshBodyText];
    [self refreshDateFont];
    [self refreshTitleFont];
}
于 2012-12-26T07:30:40.803 回答