隐藏或显示控件后如何重新绘制窗口

时间:2013-03-18 09:07:11

标签: macos cocoa interface-builder

我在窗口底部有一个NSTextField控件。 我需要根据某些条件显示或隐藏它们。

在初始状态下,控件被隐藏。 窗口显示控件位置的空白区域。 在运行时,控件应该可见

mpTxtCtrl.hidden = NO;

它不会发生。

任务:

1显示/隐藏控制。

2根据控件的状态调整主窗口的大小。

我找不到任何教程如何管理cocoa中的布局。 我将不胜感激任何帮助!

2 个答案:

答案 0 :(得分:1)

  

在运行时,控件应该可见

mpTxtCtrl.hidden = NO;
     

它不会发生。

确保已将mpTxtCtrl插座连接到笔尖中的文本字段。忘记将您的插座连接到任何东西是导致任何事情发生的主要原因。

  

我找不到任何教程如何管理cocoa中的布局。

在编辑笔尖时切换到文件检查器,然后打开“使用自动布局”。每当您沿着Aqua指南放置视图时,Xcode都会创建约束(正确放置和调整视图时出现的蓝线),Cocoa会随着视图大小和窗口的变化强制执行这些约束。

更多信息:

答案 1 :(得分:0)

检查此代码,如果您找到一些有用的内容here

-(void)awakeFromNib{
    [self.label setHidden:YES];
}


- (IBAction)showHide:(id)sender {
    NSLog(@"%@",[sender title]);

    if ([[sender title] isEqualToString:@"Hide"]) {
        [self.label setHidden:YES];
        [sender setTitle:@"Show"];
    }
    else if ([[sender title] isEqualToString:@"Show"]){
        [self.label setHidden:NO];
        [sender setTitle:@"Hide"];

    }

}

- (IBAction)maximize:(id)sender {

    NSArray *screens = [NSScreen screens];
    NSRect screenRect;
    for (NSInteger index=0; index < [screens count]; index++) {
        NSScreen *screen = screens[index];
        screenRect = [screen visibleFrame];
    }
    [self.window setFrame:screenRect display:YES];
}