0

我试图弄清楚如何在 NSViewController 中重新加载数据。

我有一个这样的项目,左侧​​栏是 NSOutlineView(由我的 outlineViewController 控制),右侧拆分视图是自定义视图: 截屏

所以我有这个“profile.xib”文件,其中包含“person”对象的一些信息。我已将 profile.xib 文件所有者设置为我的视图控制器 ProfileViewController,它是 NSViewController 的子类。

因此,每次当用户从侧边栏中选择不同的配置文件时,我的 outlineviewController 都会调用:

if (!_profileViewController)
_profileViewController = [[ProfileViewController alloc] initWithNibName:@"profile" bundle:nil]; 
[_profileViewController setProfile: item]; //item is an instance of the profile object
NSView *view = [_profileViewController view];
view.frame = _mainContentView.bounds;
[view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
[_mainContentView addSubview:view]; //add profile's view to the right hand side split view

(代码取自苹果的sidebardemo)

由于用户可能会从侧边栏中选择不同的配置文件,因此我需要在 ProfileViewController 中重新加载数据。但是我不知道哪个方法应该包含我的重新加载数据代码。如果我将“重新加载数据代码”放在 awakefromnib 中,它将被调用一次,viewload 也只会调用一次。由于内存问题,我不想在选择配置文件时重新分配和重新初始化 _profileViewController 一切。

我不能在这里使用绑定,因为某些字段的显示非常复杂。

那么我将如何重新加载数据?

4

1 回答 1

1

如何将您的“将配置文件信息加载到视图中”代码从 -awakeFromNib 移动到它自己的 -reloadData 方法中并在调用 -setProfile: 时调用它?您可以通过从表视图中自己调用它或通过覆盖 -setProfile: 来记录配置文件然后立即调用 -reloadData 来执行此操作。

于 2013-04-03T18:16:56.590 回答