Программное добавление UILabels и UIImageViews в UIScrollView

Я знаю, что этот вопрос здесь много, но я все еще не могу заставить его работать. Вероятно, я неправильно инициирую представление или что-то в этом роде... Во всяком случае, я пытаюсь программно добавить несколько меток и изображений в UIScrollView. Вот мой код для моего файла .h:

#import <UIKit/UIKit.h>

@interface DOR_HelpViewController : UIViewController <UIScrollViewDelegate> {
    IBOutlet UIScrollView *scrollView;
}

@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;

@end

И мой файл .m:

#import "DOR_HelpViewController.h"

@implementation DOR_HelpViewController

@synthesize scrollView;

- (void)viewWillAppear:(BOOL)animated {     

    [super viewWillAppear:animated];

    scrollView = [[UIScrollView alloc] init];

    UILabel *pointsCouponLbl = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 20.0, 320.0, 15.0)];
    pointsCouponLbl.font = [UIFont boldSystemFontOfSize:14.0];
    pointsCouponLbl.textAlignment = UITextAlignmentCenter;
    pointsCouponLbl.textColor = [UIColor blackColor];
    pointsCouponLbl.backgroundColor = [UIColor clearColor];
    pointsCouponLbl.text = @"Points Earned Using a Coupon";
    [scrollView addSubview:pointsCouponLbl];

    UIImageView *pointsCouponImg = [[UIImageView alloc] initWithFrame:CGRectMake(72, 45, 175, 100)];
    pointsCouponImg.image = [UIImage imageNamed:@"couponpoints.png"];
    [scrollView addSubview:pointsCouponImg];

    UILabel *pointsCheckInLbl = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 165.0, 320.0, 15.0)];
    pointsCheckInLbl.font = [UIFont boldSystemFontOfSize:14.0];
    pointsCheckInLbl.textAlignment = UITextAlignmentCenter;
    pointsCheckInLbl.textColor = [UIColor blackColor];
    pointsCheckInLbl.backgroundColor = [UIColor clearColor];
    pointsCheckInLbl.text = @"Points Earned For Check-In";
    [scrollView addSubview:pointsCheckInLbl];
    pointsCheckInLbl = nil;

    UIImageView *pointsCheckInImg = [[UIImageView alloc] initWithFrame:CGRectMake(72, 190, 175, 100)];
    pointsCheckInImg.image = [UIImage imageNamed:@"checkinpoints.png"];
    [scrollView addSubview:pointsCheckInImg];
    pointsCheckInImg = nil;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - View lifecycle

- (void)viewDidUnload
{
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

scrollView связан с моим объектом UIScrollView в моей раскадровке. Я был бы очень признателен за информацию о том, что я делаю неправильно, и почему, если вы не возражаете. Заранее спасибо~


person James    schedule 03.05.2012    source источник
comment
Я никогда не работаю с IB/раскадровками, но вы уверены, что вам нужно выделить/инициализировать представление, определенное в IB? т.е. необходимо ли scrollView = [[UIScrollView alloc] init];?   -  person Kai Huppmann    schedule 03.05.2012
comment
Нет, я не уверен. Как я должен был попробовать это, потому что это было одной из вещей, которые я рассматривал. Не могли бы вы поместить это как ответ? Я просто удалил его, и это сработало.   -  person James    schedule 03.05.2012


Ответы (1)


Удалить scrollView = [[UIScrollView alloc] init]; Не нужно (даже контрпродуктивно) при работе с ИБ.

(на самом деле это была только идея в комментарии - см. выше. Но я стараюсь зарабатывать репутацию везде, где только можно ;-))

person Kai Huppmann    schedule 03.05.2012