我想开发一个顶部有NavigationBar的应用程序,中间和底部的TableView我想创建这种TabBar。当我拖动内部较小的矩形时,我想要更改TableView的内容。所以基本上我希望它像常规的TabBar一样,每个小组件都改变我的视图(但不更改NavigationBar)。
最好的方法是什么?我是开发iOS应用程序的新手。感谢
我想要这样的事情:
答案 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)
所以基本上你想在点击的每个段上重新加载表,
假设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];