Dodaję dwa widoki, które są przechowywane przez właściwości, do mojego widoku. Podczas dodawania subviews do mojego widoku, subViews są pozornie dealokowane po wywołaniu mojej metody setup
. Rezultat końcowy jest taki, że widoki nigdy się nie wyświetlają. Teraz, jeśli zmienię moje właściwości na strong
, w przeciwieństwie do weak
, zachowuję odniesienie do widoków, które teraz są wyświetlane na ekranie. Więc co tu się dzieje? Dlaczego addSubview:
i insertSubview:
nie zachowują subviews? Zobacz poniższy kod:Dlaczego funkcja addSubview: nie zachowuje widoku?
btw, używam iOS5 z ARC (stąd silne i słabe rzeczy)
#import "NoteView.h"
@interface NoteView() <UITextViewDelegate>
@property (weak, nonatomic) HorizontalLineView *horizontalLineView; // custom subclass of UIView that all it does is draw horizontal lines
@property (weak, nonatomic) UITextView *textView;
@end
@implementation NoteView
@synthesize horizontalLineView = _horizontalLineView;
@synthesize textView = _textView;
#define LEFT_MARGIN 20
- (void)setup
{
// Create the subviews and set the frames
self.horizontalLineView = [[HorizontalLineView alloc] initWithFrame:self.frame];
CGRect textViewFrame = CGRectMake(LEFT_MARGIN, 0, self.frame.size.width, self.frame.size.height);
self.textView = [[UITextView alloc] initWithFrame:textViewFrame];
// some addition setup stuff that I didn't include in this question...
// Finally, add the subviews to the view
[self addSubview:self.textView];
[self insertSubview:self.horizontalLineView atIndex:0];
}
- (void)awakeFromNib
{
[super awakeFromNib];
[self setup];
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
[self setup];
}
return self;
}
Jak tworzysz instancja NoteView? Widzę kontroli jest osiągnięcie w ustawieniu .. –
Tworzę wystąpienie NoteView, dodając go do kontrolera widoku w storyboard. –
Czy twoja klasa jest określona w Xib jako NoteView –