スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]UILabelのテキストが表示されない(UIViewController内で管理されている)

今回は少しだけ特殊なケースです。
今回はこのようなxibファイルをクラスファイルとともに作成しました。
[iOS]UILabelのテキストが表示されない(UIViewController内で管理されている)_1
このxibの構成は、
+UIViewControllerのview
└-常にrun状態のActivity Indicator
└-IndicatorLabel(UILabel)

という構成です。
クラス自体はUIViewControllerを継承するクラスになっております。

このクラスでは1つだけプロパティが宣言されています。
//このxibのクラスヘッダ部
@interface IndicatorParts : UIViewController {
IBOutlet UILabel *IndicatorLabel;
}
@property (nonatomic,retain) UILabel *IndicatorLabel;
@end


上記のようにUILabel型のIndicatorLabelというプロパティを用意しています。
このクラスを外部でインスタンスを生成し、インジケータ表示を行う仕組みです。

ここでおもむろにこのクラスをインスタンスとして生成してみます。
//TestViewController.m
-(void)viewDidLoad{
[super viewDidLoad];
IndicatorParts *indicator = [[[IndicatorParts alloc] init] autorelease];
indicator.IndicatorLabel.text = @"てすと";
[self.view addSubview:indicatorParts.view];
}


しかしこの状態では、さきほどのxibの「通信を確認中...」から変わりません。
この場合の期待する動作は、「てすと」という文字列にラベルが変化していることです。

どうして変化しないかと言うと、そもそもUIViewControllerを生成しただけではそのコントローラはviewDidLoadは呼ばれていません。
つまり、
//IndicatorPartsクラスの生成
IndicatorParts *indicator = [[[IndicatorParts alloc] init] autorelease];

この段階ではまだ描画が行われていないことになります。
このソースでの描画タイミングは、
//TestViewControllerのviewへ追加
[self.view addSubview:indicatorParts.view];

となりますので、この描画が終了した段階もしくはその描画時のタイミングでこのテキストを設定してあげる必要があります。

今回重要なのは、
UILabelのテキストはUIViewControllerのviewDidLoad時(描画時)のタイミングであるということです
このエントリーをはてなブックマークに追加

tag : iOS UILabel ラベル タイトル テキスト 変更 できない UIViewController viewDidLoad 描画

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。