我想从我的主视图控制器中删除具有黄色阴影的视图。核心数据:删除存储在核心数据中的视图
它正确注册号码,但不会删除。 (它不会更新我试图调用setNeedsDisplay的视图,但所有这些行都不起作用,它只会在您退出应用程序重新加载时更新,它不在managedobjectcontext中,但它保留在视图中,我是不是发布了一些东西?)如果我拥有它,它只会传递一个项目。如果您单击它以删除它,它会起作用,但这不适用于阴影。你能看到为什么?
更新: 我有存储在核心数据(页面)中的视图,并且我希望在选择它们时删除这些页面并且有一个黄色阴影。如果我需要如何将视图添加到数组或其他东西,当它添加阴影,然后在需要删除时找到它们。
-(void)trashitems{
for (NSString *itemKey in [itemViews allKeys]){
UIView<CollectionViewItemView> *itemview = [itemViews objectForKey:itemKey];
if ([itemview layer].shadowColor == [UIColor yellowColor].CGColor){
NSLog(@"remove %i",[[NSDecimalNumber decimalNumberWithString:itemKey] unsignedIntegerValue]);
if ([dataDelegate respondsToSelector:@selector(collectionView:canDeleteItemAtIndex:)]
&& [dataDelegate collectionView:self canDeleteItemAtIndex:[[NSDecimalNumber decimalNumberWithString:itemKey] unsignedIntegerValue]]
&& [dataDelegate respondsToSelector:@selector(collectionView:didDeleteItemAtIndex:)])
{
[itemViews release];
NSUInteger itemsCountBeforeDeletion = [dataDelegate countOfItemsInCollectionView:self];
[dataDelegate collectionView:self didDeleteItemAtIndex:[[NSDecimalNumber decimalNumberWithString:itemKey] unsignedIntegerValue]];
NSUInteger itemsCountAfterDeletion = [dataDelegate countOfItemsInCollectionView:self];
if (itemsCountBeforeDeletion - 1 != itemsCountAfterDeletion){
[NSException raise:@"Collection View Deletion Exception" format:@"Count of items in collection view before deletion (%u) must equal one more than count of items in collection view after deletion (%u) but did not.", itemsCountBeforeDeletion, itemsCountAfterDeletion];
}
}
}
}
}
你的问题是混乱的,这是很难说的连接是什么去除一个UIView和核心数据之间。您的'trashitems'方法也不会调用'removePageAtIndex',反之亦然,所以不清楚它们是如何连接的。托管对象上下文不控制UIViews,所以你究竟在这里做什么? –
我尝试更新我忘了部分代码,但我有存储在核心数据(页)的观点,我想选择它们时要删除的页面,有一个黄色的影子。 – BDGapps
比较图层的阴影颜色是确定要删除哪些数据的一种很差的方法。你应该给模型对象一些你可以测试的属性,比如'shouldDelete',并且让它决定使用什么阴影颜色。除了目前的方案明显违反了MVC之外,有太多的方法可能会出错,例如,你确定'[UIColor yellowColor] .CGColor'总是返回相同的CGColorRef吗?你确定图形系统中没有东西会改变你分配的颜色吗? – Caleb