Fixed: calling CPTabView setTabViewType:CPNoTabsNoBorder before the first insertTabViewItem would cause an error. Fixed: if a tab item was added in CPNoTabsNoBorder mode, and the mode was later switched to CPTopTabsBezelBorder, that previously added tab item would have no label/tab. The solution is to maintain _labelsView in either mode; since in CPNoTabsNoBorder mode _labelsView is not in the view hierarchy anyhow the performance impact should be minimal.

This commit is contained in:
Alexander Ljungberg
2010-08-02 12:39:28 -04:00
committed by Aparajita Fishman
parent ac42809a2b
commit 9e2a7ea776
+3 -3
View File
@@ -240,7 +240,7 @@ var CPTabViewDidSelectTabViewItemSelector = 1,
*/
- (void)insertTabViewItem:(CPTabViewItem)aTabViewItem atIndex:(unsigned)anIndex
{
if (!_labelsView && _tabViewType == CPTopTabsBezelBorder)
if (!_labelsView)
[self _createBezelBorder];
[_tabViewItems insertObject:aTabViewItem atIndex:anIndex];
@@ -459,12 +459,12 @@ var CPTabViewDidSelectTabViewItemSelector = 1,
if (_tabViewType == CPNoTabsBezelBorder || _tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder)
[_labelsView removeFromSuperview];
else if (![_labelsView superview])
else if (_labelsView && ![_labelsView superview])
[self addSubview:_labelsView];
if (_tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder)
[_backgroundView removeFromSuperview];
else if (![_backgroundView superview])
else if (_backgroundView && ![_backgroundView superview])
[self addSubview:_backgroundView];
[self layoutSubviews];