将 NSSegmentedControl 与 CoreData 一起使用
Posted
技术标签:
【中文标题】将 NSSegmentedControl 与 CoreData 一起使用【英文标题】:Using NSSegmentedControl with CoreData 【发布时间】:2010-06-25 10:15:28 【问题描述】:我有一个 Core Data 应用程序,该应用程序可以添加或删除客户的众多约会之一,其按钮在 IB 中绑定到我的约会 ArrayController。约会内容来自提要列表中选择的任何客户端。 我希望使用 SegmentedControl,据我所知,这需要我以编程方式添加和删除约会中的对象。我已经成功地使用 Marcus Zarra 在 p54 上的核心数据一书中的代码添加了一个约会,但是我无法删除一个选定的约会。我正在使用自定义表格单元格,我怀疑这可能会使事情复杂化。
简而言之,我希望在选定对象上以编程方式实现 ArrayController 的 remove: 方法。
有人可以帮忙吗?
【问题讨论】:
【参考方案1】:谢谢,马丁。我的代码最终看起来像这样。
-(IBAction) notesEditorSegClicked:(id)sender
int clickedSegment = [sender selectedSegment];
switch (clickedSegment)
case 0: // add new object
NSManagedObject *newNote = [NSEntityDescription
insertNewObjectForEntityForName:@"Note"
inManagedObjectContext:notes.managedObjectContext];
[notes addObject:newNote];
break;
case 1: // delete selected object
NSArray *objectsToDelete = [notes selectedObjects];
for (NSManagedObject* objectToDelete in objectsToDelete)
[notes.managedObjectContext deleteObject:objectToDelete];
break;
case 2:// close view
[self loadClientSummary:sender];
break;
【讨论】:
【参考方案2】:从绑定到 UI 的 ArrayController 中获取当前选择
- (NSArray *)selectedObjects
使用上下文删除那些对象
-(void) deleteObject:(NSManagedObject*) object
示例:
NSArray* objectsToDelete = [NSArray arrayWithArray:[arrayController selectedObject]];
for (NSManagedObject* objectToDelete in objectsToDelete)
[arrayController.managedObjectContext deleteObject:objectToDelete];
【讨论】:
以上是关于将 NSSegmentedControl 与 CoreData 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Interface Builder Xcode 6.1.1 的 NSSegmentedControl 布局错误
text Divi按钮通常与文本一起缩放,看起来很糟糕。使用此CSS设置最小宽度 - 按钮将根据文本co放大