我想開發一個頂部有NavigationBar的應用程序,中間的TableView和底部的我想創建這種TabBar。當我拖動內部較小的矩形時,我想更改TableView的內容。所以基本上我希望它像一個普通的TabBar,其中每個小組件改變我的視圖(但不更改NavigationBar)。TabBar with「drag」for iOS 5
什麼是最好的方法來解決這個問題。我對開發iOS應用程序很陌生。由於
我想是這樣的:
我想開發一個頂部有NavigationBar的應用程序,中間的TableView和底部的我想創建這種TabBar。當我拖動內部較小的矩形時,我想更改TableView的內容。所以基本上我希望它像一個普通的TabBar,其中每個小組件改變我的視圖(但不更改NavigationBar)。TabBar with「drag」for iOS 5
什麼是最好的方法來解決這個問題。我對開發iOS應用程序很陌生。由於
我想是這樣的:
我想這樣做的最好的方法是創建一個自定義組件。 UITabBar沒有「拖動效果」。
你應該做的是繼承UIView的內部創建5個UIButtons和一個「移動」UIView這將是UIButton的大小。
當然,你需要所有這些組件的圖像(但這不是很難)。
他們你可以編寫你的自定義行爲在這個子類中。
編輯:完全忘了拖動效果。你不會那樣。但至少它看起來類似...
如果您的目標是iOS5,您可以使用UISegmentedControl並將其設置爲一些圖像。
看一看在User Interface Customization in iOS 5 tutorial
的「自定義UISegmentedControl」一節你基本上爲每個可能的狀態(選擇 - 選擇,未選擇 - 選擇,選擇 - 未選中的和未選中 - 未選定)的圖像,並使用新的UIAppearance
方法來創建自定義外觀。
UIImage *segmentSelected =
[[UIImage imageNamed:@"segcontrol_sel.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentUnselected =
[[UIImage imageNamed:@"segcontrol_uns.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentSelectedUnselected =
[UIImage imageNamed:@"segcontrol_sel-uns.png"];
UIImage *segUnselectedSelected =
[UIImage imageNamed:@"segcontrol_uns-sel.png"];
UIImage *segmentUnselectedUnselected =
[UIImage imageNamed:@"segcontrol_uns-uns.png"];
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected
forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected
forLeftSegmentState:UIControlStateSelected
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance]
setDividerImage:segUnselectedSelected
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];
是的,不幸的是我也想要拖動效果。 – Cosmin 2012-02-22 09:28:58
所以基本上ü要重新加載每個分段表點擊,
假設arrOne,arrTwo和arrThree,
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { int returnValue = 0;
if(segment.tag == 0) returnValue = [arrOne count]-1; else
if(segment.tag == 1) returnValue = [arrTwo count]-1; else
if(segment.tag == 2) returnValue = [arrTwo count]-1; return
returnValue;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(segment.tag == 0)
cell.text = [arrOne objectAtIndex:indexPath.row];
else if(segment.tag == 1)
cell.text = [arrTwo objectAtIndex:indexPath.row];
else if(segment.tag == 2)
cell.text = [arrThree objectAtIndex:indexPath.row];
}
[tblObject reloadData];
我明白了,但我更感興趣的是如何創建自定義組件,我想要拖動效果。 – Cosmin 2012-02-22 09:33:35
爲什麼你不會想改變導航欄?我認爲你要走的路是創建一個TabBar應用程序,每個Tab都有自己的NavigationController。當您更改標籤時,會顯示不同的表格。不要使用一個,並改變內容 – pmk 2012-02-22 09:09:08
是的,我會顯示不同的tableview,但我希望我的標籤欄具有該格式(類似於舊的HTC Sense,如果你知道,拖動或點擊,它會改變屏幕) – Cosmin 2012-02-22 09:17:41