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
これは「ブ」です。
#import <UIKit/UIKit.h>
@class LetterCollectionCell;
@interface UIMovableImage : UIImageView
{
CGPoint currentPoint;
}
@property (strong) LetterCollectionCell* parent;
@end
これは「Cm」です。
#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 が使用される 2 つのシーンがあります。あるシーンでは、イメージビューを UIMovableImage ( Inspector Window を介して) に設定し、別のシーンでは、イメージを UIImageView タイプのままにしました。したがって、ランタイムはさまざまなシーンで適切なクラスを作成し、コレクションでチェックします。画像に「親」プロパティがある場合は、それを設定します。そうでなければ私はしません。それはうまくいきます、割り当てはうまくいきます....しかし、アクセスはそうではありません