kre*_*ema 7 objective-c nsoutlineview
我正在尝试使用"自动保存扩展项目"功能.当我使用其子项扩展组并重新启动应用程序时,所有子项都会再次折叠,我不知道为什么它们不会保持扩展状态.我正在使用核心数据来存储我的源列表项.
这是我到目前为止所做的/设置:
这是我对outlineView的实现:persistentObjectForItem和outlineView:itemForPersistentObject.
- (id)outlineView:(NSOutlineView *)anOutlineView itemForPersistentObject:(id)object
{
NSURL *objectURI = [[NSURL alloc] initWithString:(NSString *)object];
NSManagedObjectID *mObjectID = [_persistentStoreCoordinator managedObjectIDForURIRepresentation:objectURI];
NSManagedObject *item = [_managedObjectContext existingObjectWithID:mObjectID error:nil];
return item;
}
- (id)outlineView:(NSOutlineView *)anOutlineView persistentObjectForItem:(id)item
{
NSManagedObject *object = [item representedObject];
NSManagedObjectID *objectID = [object objectID];
return [[objectID URIRepresentation] absoluteString];
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢.
编辑: 我有一个线索!问题可能是树控制器没有按时准备其内容.方法applicationDidFinishLaunching,outlineView:persistentObjectForItem等在数据加载之前执行,或者NSOutlineView尚未完成初始化.任何想法如何解决这个问题?
我遇到的问题是我的 -outlineView:itemForPersistentObject: 实现根本没有被调用。事实证明,当设置“autosaveExpandedItems”或“autosaveName”时,会调用此方法。我的解决方案是在代码中设置这两个属性,而不是在 InterfaceBuilder 中设置。当我在分配委托后设置属性时,该方法将被调用。
归档时间: |
|
查看次数: |
1262 次 |
最近记录: |