【问题标题】:Redraw NSTableView with new data from file when NSViewController re-loaded?重新加载 NSViewController 时使用文件中的新数据重绘 NSTableView?
【发布时间】:2011-02-22 17:47:46
【问题描述】:

我有一个基于 Mac OS X 文档的应用程序,它有多个 NSViewControllers 我可以在它们之间切换,并且每个视图根据用户在之前的 NSViewController 的 NSTableView 中的选择显示来自 NSTableViews 中 plist 文件的数据。我遇到的问题是我无法弄清楚每次加载 NSViewController 时可以调用什么函数来从文件中读取正确的数据以显示在 NSTableView 中。 UIViewControllers我使用了viewDidLoad的函数族viewWillAppear,但是一直找不到NSViewController对应的函数。

目前我正在使用 awakeFromNib,它工作正常,但仅在第一次加载 NSViewController 时。我试过 loadView,但这会使 NSView 崩溃。我假设我需要做更多的设置才能使用 loadView。

我正在使用 Hillegass 的书 Cocoa Programming for MAC OS X 中的 View Swapping 代码,它使用以下代码切换 ViewController:

  - (void)displayViewController:(ManagingViewController *)vc
                   curBox: (NSBox *)windowBox

  {
// End editing
NSWindow *w = [windowBox window];
BOOL ended = [w makeFirstResponder:w];
if (!ended) {
    NSBeep();
    return;
}
NSView *v = [vc view];

NSSize currentSize = [[windowBox contentView] frame].size;

NSSize newSize = [v frame].size;

float deltaWidth  = newSize.width  - currentSize.width;
float deltaHeight = newSize.height - currentSize.height;

NSRect windowFrame = [w frame];
windowFrame.size.height += deltaHeight;
windowFrame.origin.y -= deltaHeight;
windowFrame.size.width += deltaWidth;

[windowBox setContentView:nil];
[w setFrame:windowFrame
    display:YES
    animate:YES];

[windowBox setContentView:v];

// Put the view controller in the responder chain

[v setNextResponder:vc];
[vc setNextResponder:windowBox];
 }

并将 NSView 控制器放入响应者链中。

每次我交换 NSViewControllers 时,我可以调用一些函数来设置视图吗?我可以检查一个 NSViewController 是否已成为 firstResponder 吗?

【问题讨论】:

    标签: nstableview nsviewcontroller loadview


    【解决方案1】:

    post 提供了答案。

    我添加了以下代码:

    - (void)viewWillLoad {
    
    }
    
    - (void)viewDidLoad {
    
    }
    
    - (void)loadView {
    [self viewWillLoad];
    [super loadView];
    [self viewDidLoad];
    }
    

    我在 displayViewController 的开头添加了

    [vc loadView]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多