0

絵コンテに取り組んでいます。

ビュー コントローラー (ストーリーボード) を作成し、コンテンツの途中で xib ファイルからサブビューを追加しました。

サブビューのような xib (UIView) を ViewController に追加し、データを含むオブジェクトを送信し、そのデータをラベルに出力したいのですが、方法がわかりません。

これが私のコードです。

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
    UIView *subView;
}

@property (strong, nonatomic) IBOutlet UIView *subView; //connected over IB
@end

ViewController.m

#import "OfferViewController.h"
#import "OfferLocation.h"

@interface OfferViewController ()

@end

@implementation OfferViewController

@synthesize subView;

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

- (void)viewDidLoad
{
    [super viewDidLoad];
    OfferLocation *location = [[OfferLocation alloc] initWithFrame:CGRectZero];
    [self.subView addSubview:location];
}
...
@end

ここにサブビューがあります: OfferLocation.h

#import <UIKit/UIKit.h>

@interface OfferLocation : UIView{
    UIView *view;
    UILabel *locationLabel;// here is that label taht I want to print into
}

@property (nonatomic, retain) IBOutlet UIView *view;// connected over IB
@property (nonatomic, retain) IBOutlet UILabel *locationLabel;

@end

OfferLocation.m

#import "OfferLocation.h"

@implementation OfferLocation

@synthesize view, locationLabel;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        locationLabel.text = @"some text"; //this is not working
        NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"OfferLocation" owner:self options:nil];
        UIView *tempView = [subviewArray objectAtIndex:0];
        [self addSubview:tempView];
    }
    return self;
}
4

1 に答える 1

0

subView は、初期化されてビューにロードされたり、表示されたりすることはありません。したがって、あなたはそれを見ることができません。

電話してみてください:

            self.view = self.subView // or subView; // or [self.view addSubview:self.subView // or subview];

または似たようなもの

次に、UILabel を宣言し、必要なテキストで初期化して、サブビューに追加します。

         UILabel *label = [[UILabel alloc] initWithString:@"StackOverflow rocks!"];
         [self.subView addSubview:label];
// or [self.view addSubview:label];

サブビューの設定方法が異なります。

ラベルのテキストに設定したいこのデータは何ですか? データ型の場合は、文字列で指定子を使用します。

        %i // for int
%@ // for string or object adress
%c // for char
%f // for float

等...

于 2012-05-03T06:26:02.507 に答える