ARC環境で少し問題があります。親ビューにビューを追加する NSObject の作成 - 基本的には、テキストを処理して表示できる「ポップアップ クラス」です。
ビューコントローラーでは、インスタンス化されています..
CBHintPopup *popup = [[CBHintPopup alloc]init];
[popup showPopupWithText:@"test text" inView:self.view];
そして実際のクラスファイル..
CBHintPopup.h
@interface CBHintPopup : NSObject {
}
-(void)showPopupWithText:(NSString *)text inView:(UIView *)view;
-(IBAction)closePopup;
@property (nonatomic, strong) UIView *popupView;
@property (nonatomic, strong) UIImageView *blackImageView;
@property (nonatomic, strong) UIButton *closeButton;
@end
CBHintPopup.m
@implementation CBHintPopup
@synthesize popupView,blackImageView, closeButton;
-(void)showPopupWithText:(NSString *)text inView:(UIView *)view {
//CREATE CONTAINER VIEW
self.popupView = [[UIView alloc]initWithFrame:CGRectMake((view.frame.size.width/2)-(225/2),-146,225,146)];
self.popupView.alpha = 0;
self.popupView.backgroundColor = [UIColor clearColor];
//CREATE AND ADD BACKGROUND
UIImageView *popupBackground = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,225,146)];
popupBackground.image = [UIImage imageNamed:@"hintbackground.png"];
[self.popupView addSubview:popupBackground];
//CREATE AND ADD BUTTON
self.closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.closeButton addTarget:self action:@selector(closePopup) forControlEvents:UIControlEventTouchUpInside];
[self.popupView addSubview:self.closeButton];
//CREATE AND ADD LABEL
UILabel *popupTextLabel = [[UILabel alloc]initWithFrame:CGRectMake(22,25,176,93)];
popupTextLabel.text = text;
[self.popupView addSubview:popupTextLabel];
[view addSubview:self.popupView];
}
-(void)closePopup {
NSLog(@"HI");
}
ボタンを押して closePopup が呼び出されると、次のメッセージが表示されます (「HI」は出力されません)。
-[CBHintPopup performSelector:withObject:withObject:]: message sent to deallocated instance 0x246b2fe0
ボタンをARC以外で保持しようとしましたが、他の方法はたくさんありましたが、うまくいきませんでした。おそらく本当に単純なことですが、私はそれを釘付けにすることはできません。スペースを節約するために、ラベルや画像などの設定をすべて削除したので、アルファなどは無視してください。
お時間をいただきありがとうございます。