0

Mark、Nutting、LaMarche による「Beginning iOS 5 Development」(Apress 2011) の第 15 章を読んでいます。556 ページでは、オブジェクトをライブラリから nib にドラッグする代わりに、コードからセグメント化されたコントロールを表示することになっています。コードスニペットは……

self.smileyView.image = self.smiley;

self.segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"One", @"Two", @"Three", @"Four", nil]];
self.segmentedControl.frame = CGRectMake(bounds.origin.x + 20, CGRectGetMaxY(bounds) - 50, bounds.size.width - 40, 30);

[self.view addSubview:self.segmentedControl];

[self.view addSubview:self.smileyView];
[self.view addSubview:self.label];

... ... ...

スマイリーとラベルは期待どおりに表示されますが、セグメント化されたコントロールは表示されないことに注意してください。ところで、プロパティ segmentedControl を .h で正式に宣言し、 .m で合成しました。この segmentedControl が iOS 6 シミュレーターに表示されないのはなぜですか?

4

1 に答える 1

0

これは主に、セグメント化されたコントロールのフレームが正しくないためです。

サブビュー行を追加した後、次のようにNSLogを配置して、画面のどこにあるか、サイズを確認します。

  NSLog(@"frame %@", NSStringFromCGRect(self.segmentedControl.frame))

そして最後の努力として、セグメント化されたコントロールを前面に持ってきてみてください。

[self.view bringSubviewToFront:self.segmentedControl]

これはあなたに何が悪いのかについての考えを与えるはずです

于 2013-01-11T19:32:12.667 に答える