シミュレーターで適切に表示され、正常に動作し、さまざまなデバイス (異なる世代の iPad と iPhone - iPhone のみのアプリ) でデバッグしているときに、View Controller を取得しました。
しかし、ショップからダウンロードすると、このビューは空のままです。ベータ テスター向けに IPA バインドが作成された場合も、空のままです。
ビュー コントローラがポップされ、表示され、アニメーション化されます。ナビゲーション バーが表示され、呼び出し元のビュー コントローラーに戻ることができます。小さなアプリの他のすべてのビュー コントローラーは問題なく動作します。
ここで何が間違っているのでしょうか?
これが許可されているかどうかはわかりませんが、許可されている場合は、テストしたい人のためにストアへのリンクを提供できます. 無料アプリです。
これは少し前の私の最初のアプリだったので、それは非常にばかげたことかもしれません. ただし、以前は正常に動作していました(afaik)。
更新: ストアまたは AdHoc 境界からインストールすると、ビューは XIB ファイルで定義されているとおりに表示されます。そのファイルでは空です。デバッグ用にシミュレーターまたはデバイスにインストールすると、プログラムで生成された 2 つのコントロールが表示されます。それらは適切に機能します。これは作成コードです:
#define kSegmentedControlHeight 40.0
#define kLabelHeight 20.0
#define kLeftMargin 20.0
#define kTopMargin 20.0
#define kRightMargin 20.0
#define kTweenMargin 10.0
- (void)createControls
{
NSArray *segmentBlendeTextContent = [NSArray arrayWithObjects: @"ganz", @"halb", @"drittel", nil];
NSArray *segmentISOTextContent = [NSArray arrayWithObjects: @"ISO", @"ASA", @"DIN", @"GOST", nil];
CGFloat yPlacement;
CGRect frame;
// label
yPlacement += (kTweenMargin * 2.0) + kSegmentedControlHeight;
frame = CGRectMake( kLeftMargin,
yPlacement,
self.view.bounds.size.width - (kRightMargin * 2.0),
kLabelHeight);
[self.view addSubview:[SettingsViewController labelWithFrame:frame title:@"Blendstufen:"]];
fStopSegmentedControl = [[UISegmentedControl alloc] initWithItems:segmentBlendeTextContent];
yPlacement += kTweenMargin + kLabelHeight;
frame = CGRectMake( kLeftMargin,
yPlacement,
self.view.bounds.size.width - (kRightMargin * 2.0),
kSegmentedControlHeight);
fStopSegmentedControl.frame = frame;
fStopSegmentedControl.tintColor = theGlobals.inBarColor;
[fStopSegmentedControl addTarget:self action:@selector(fStopSegmentAction:) forControlEvents:UIControlEventValueChanged];
fStopSegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
// Hier wird der Default gesetzt !!!
fStopSegmentedControl.selectedSegmentIndex = 1;
[self.view addSubview:fStopSegmentedControl];
//Setze Control für Blendestufen-Wert
[fStopSegmentedControl setEnabled:YES forSegmentAtIndex:theGlobals.fStopSetting.integerValue - 1];
// label
yPlacement += (kTweenMargin * 2.0) + kSegmentedControlHeight;
frame = CGRectMake( kLeftMargin,
yPlacement,
self.view.bounds.size.width - (kRightMargin * 2.0),
kLabelHeight);
[self.view addSubview:[SettingsViewController labelWithFrame:frame title:@"Normensystem Film/Sensor:"]];
yPlacement += kTweenMargin + kLabelHeight;
isoSegmentedControl = [[UISegmentedControl alloc] initWithItems:segmentISOTextContent];
frame = CGRectMake( kLeftMargin,
yPlacement,
self.view.bounds.size.width - (kRightMargin * 2.0),
kSegmentedControlHeight);
isoSegmentedControl.frame = frame;
// isoSegmentedControl.tintColor = [UIColor blackColor];
isoSegmentedControl.tintColor = theGlobals.inBarColor;
[isoSegmentedControl addTarget:self action:@selector(isoSegmentAction:) forControlEvents:UIControlEventValueChanged];
isoSegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
// Setze Wert für Blendstufen
isoSegmentedControl.selectedSegmentIndex = theGlobals.isoSetting.integerValue - 1;
[self.view addSubview:isoSegmentedControl];
//Setze Control für ISO-Wert
[isoSegmentedControl setEnabled:YES forSegmentAtIndex:theGlobals.isoSetting.integerValue - 1]; // 1 noch in Variable ändern !!!
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Einstellungen";
// self.view.backgroundColor = [UIColor grayColor];
self.view.backgroundColor = [UIColor colorWithRed:32.0/255.0 green:32.0/255.0 blue:32.0/255.0 alpha:1.0];
[self createControls]; // create the showcase of controls
}
更新 2: 違いはビルド構成にあります。ローカルで「実行」するためにビルドし、「開発」構成ではなく「配布」構成を使用すると、デバイスで同じ動作が観察されます: 空のビュー コントローラー。しかし、シミュレーターでは、コントロールがさらに下に配置されていることがわかります。したがって、現時点では、コントロールもデバイスのビューの一部であると思いますが、画面の一番下の行の下に表示されます。
更新 3: 近づいています ... フロート yPlacement に行き着きます。リリース モードでは、デバッガーはその内容を表示できません。これは、変数が表示されるデバッガー ウィンドウに記載されていますが、解決されていません。その説明を印刷すると、次のようになります。
Printing description of yPlacement:
(CGFloat) yPlacement = <variable not available>
そのため、最終的には、デバッグ (-O0) には設定されているがリリース/配布 (-Os) には設定されていない最適化フラグと組み合わせて、何らかのコンパイラ エラーが発生するようです。または、リリース バージョンと配布バージョンでデバッグ シンボルが取り除かれていることが原因です。フレーム変数ですが、ちゃんと見えます。明らかに、yPlacement を介して供給される値は異なります。
更新 5: 解決策が見つかりました。問題が修正されました。さらにテストを行い、ここにいる場合は回答を投稿します。ところで - それはコードにあります。見れば分かります。