我有一个UICollectionViewCell
(让我们称之为c
)的实例。
c
有一个child
类型的属性B*
@property (strong) B* child;
里面有B
一个声明
@property (strong) C* parent;
在C.m
我设置
self.child.parent = self
在B.m
我有代码:
position = self.parent.center.x;
由于某种原因,我无法center
从实例外部访问 UIVIew 的属性。是私人的吗?我查看UIView.h
了文档。我不认为它是私人的。
访问self.parent
是B.m
给我正确的价值观......
那为什么我不能访问它?在C.m
self.center
正在按预期工作...
编辑:使用真实代码
这就是所谓的“Ch”
#import <UIKit/UIKit.h>
#import "UIMovableImage.h"
@interface LetterCollectionCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIImageView *letterCellView;
@end
这是“Bh”
#import <UIKit/UIKit.h>
@class LetterCollectionCell;
@interface UIMovableImage : UIImageView
{
CGPoint currentPoint;
}
@property (strong) LetterCollectionCell* parent;
@end
这是“厘米”
#import "LetterCollectionCell.h"
#import "LettersCollection.h"
@implementation LetterCollectionCell
-(void)PrepareImage:(int)index Hint:(BOOL)hint Rotate:(BOOL)rotate
{
if ([_letterCellView respondsToSelector:@selector(parent)])
{
UIMovableImage* temp = ((UIMovableImage*)self.letterCellView);
temp.parent = self;
}
}
@end
这是“Bm”
#import "UIMovableImage.h"
#import "LetterCollectionCell.h"
@implementation UIMovableImage
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
// Get active location upon move
CGPoint activePoint = [[touches anyObject] locationInView:self.parent];
// Determine new point based on where the touch is now located
CGPoint newPoint = CGPointMake(self.parent.center.x + (activePoint.x - currentPoint.x),
self.parent.center.y + (activePoint.y - currentPoint.y));
}
@end
请注意,LetterCollectionCell 的 letterCellView 是 UIImageView 类型,而不是 UIMovableImage 类型。原因是我想将此声明保留为占位符。在 Interface Builder 中,我有两个使用 LetteCollection 的场景。在一个场景中,我将 imageview 设置为 UIMovableImage(通过 Inspector Window),而在另一个场景中,我将图像设置为 UIImageView 类型。因此,运行时将在不同的场景中创建适当的类,并在我检查的集合中:如果图像具有“父级”属性 - 我设置它。否则我不会。它工作正常,分配工作正常......但访问权限不是