TabBar与iOS 5的“拖动”

时间:2012-02-22 09:05:14

标签: iphone objective-c cocoa-touch ios5

我想开发一个顶部有NavigationBar的应用程序,中间和底部的TableView我想创建这种TabBar。当我拖动内部较小的矩形时,我想要更改TableView的内容。所以基本上我希望它像常规的TabBar一样,每个小组件都改变我的视图(但不更改NavigationBar)。

最好的方法是什么?我是开发iOS应用程序的新手。感谢

我想要这样的事情:

enter image description here

3 个答案:

答案 0 :(得分:1)

我认为最好的方法是创建自定义组件。 UITabBar没有“拖拽效果”。

你应该做的是创建UIView的子类,在里面创建5个UIButtons,并且一个“移动”UIView,它将是UIButton的大小。

当然,您需要所有这些组件的图像(但这并不是很难)。

他们可以在此子类中编写自定义行为。

答案 1 :(得分:0)

编辑:完全忘记了拖动效果。你不会那样做的。但至少它看起来很相似......

如果您的目标是iOS5,您可以使用UISegmentedControl并使用一些图像设置样式。

查看"自定义UISegmentedControl" User Interface Customization in iOS 5 tutorial

中的部分

您基本上为每个可能的状态创建一个图像(选中 - 选中,未选中 - 选中,选中 - 未选中和未选中 - 未选中)并使用新的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];

答案 2 :(得分: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];