2012-02-22 73 views
0

我想開發一個頂部有NavigationBar的應用程序,中間的TableView和底部的我想創建這種TabBar。當我拖動內部較小的矩形時,我想更改TableView的內容。所以基本上我希望它像一個普通的TabBar,其中每個小組件改變我的視圖(但不更改NavigationBar)。TabBar with「drag」for iOS 5

什麼是最好的方法來解決這個問題。我對開發iOS應用程序很陌生。由於

我想是這樣的:

enter image description here

+2

爲什麼你不會想改變導航欄?我認爲你要走的路是創建一個TabBar應用程序,每個Tab都有自己的NavigationController。當您更改標籤時,會顯示不同的表格。不要使用一個,並改變內容 – pmk 2012-02-22 09:09:08

+0

是的,我會顯示不同的tableview,但我希望我的標籤欄具有該格式(類似於舊的HTC Sense,如果你知道,拖動或點擊,它會改變屏幕) – Cosmin 2012-02-22 09:17:41

回答

1

我想這樣做的最好的方法是創建一個自定義組件。 UITabBar沒有「拖動效果」。

你應該做的是繼承UIView的內部創建5個UIButtons和一個「移動」UIView這將是UIButton的大小。

當然,你需要所有這些組件的圖像(但這不是很難)。

他們你可以編寫你的自定義行爲在這個子類中。

+0

爲什麼我必須創建5個UIButtons按鈕? – Cosmin 2012-02-22 09:21:43

+0

如果你問UIButton的類型,我說這是因爲它會使你的自定義滑塊可點擊,因爲你可以將AddTarget和Selector添加到UIButton中。 – Ganzolo 2012-02-22 09:25:36

+0

對於數字,它可以是5,4,3 ...我說5,因爲UITabBar最多有5個部分 – Ganzolo 2012-02-22 09:26:13

0

編輯:完全忘了拖動效果。你不會那樣。但至少它看起來類似...

如果您的目標是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]; 
+0

是的,不幸的是我也想要拖動效果。 – Cosmin 2012-02-22 09:28:58

0

所以基本上ü要重新加載每個分段表點擊,

創建3 NSMutable陣列和數據填充它們。

假設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]; 
+0

我明白了,但我更感興趣的是如何創建自定義組件,我想要拖動效果。 – Cosmin 2012-02-22 09:33:35