2013-01-11 41 views
0

我正在閱讀Mark,Nutting和LaMarche的「開始iOS 5開發」第15章(Apress 2011)。在頁556,我應該從代碼顯示分段控件,而不是從庫中將對象拖動到筆尖。該代碼段是 ......addSubview不會使UISegmentedControl顯示

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]; 

......

需要注意的是笑臉的事情,標籤顯示爲預期,但分段控制沒有。順便說一句,我已正式宣佈在.h中的屬性segmentedControl並在.m中合成它。 爲什麼我沒有看到這個segmentedControl在iOS 6模擬器中顯示?

+1

這哪裏是正從叫的想法? viewDidLoad中?有界限被宣佈? –

+0

你NSLogged檢查框架和邊界? – foundry

+0

是的,裏面viewDidLoad和CGRect bounds = self.view.bounds; – Hackless

回答

0

它應該主要是因爲分段控制的框架不正確。

附加子視圖線的地方後的NSLog如下,看看哪裏是它的屏幕和它

大小和作爲最後的努力,試圖使分段控制向前方。

[self.view bringSubviewToFront:self.segmentedControl]

這應該給你的什麼是錯的

+0

框架{{20,498},{280,30}} 是NSLog打印輸出 – Hackless

+0

將框架設置更改爲「self.segmentedControl.frame = CGRectMake(bounds.origin.x + 20,CGRectGetMaxY(bounds ) - 150,bounds.size.width - 40,30);「 ,segmentedControl顯示!將Y原點設置爲相對於MaxY(邊界)時,更改爲50至150。感謝你們! – Hackless

+0

那就是每個人都在說的;你的框架是錯誤的! – Siby