我有一个用于列出用户的表视图,在按钮单击时我想显示另一个表视图弹出...就像动作表.... 任何帮助表示赞赏.... 我在这里上传一张示例图片......!
答案 0 :(得分:2)
我为迷你表创建一个单独的UITableViewController,一旦用户从大表中选择了一个单元格,就将其提供给相关的数据源。然后将迷你表的视图作为子视图添加到主视图中,可能在迷你表和大表之间有一个透明的UIView,这样用户手势就不会传递到大表。
[编辑] 您可以将相同的View Controller作为数据源并委托多个表视图。您可能已经注意到,所有UITableView的委托方法都提供对原始表视图的引用,因此您可以区分大表和迷你表,即每个表,不同单元格等可以有不同的行数。
与上面的建议大致相同,除非它不干净,你必须在每个委托方法中都有以下代码:
if(tableView.tag == kBigTableTag) { ... }
else if (tableView.tag == kMiniTableTag) { ... }
如上所述,您仍然需要将迷你表添加为View Controller视图的子视图。我建议您为迷你表使用单独的UITableViewController,除非你有充分的理由不这样做?
希望所有这一切都有意义:)
答案 1 :(得分:2)
假设您有两个UITableView table1和table2 -
设置
table1.tag = 1;
table2.tag = 2;
将delegate和datasource属性设置为self。
在任何委托方法中,您都可以检测table by tag属性。见下文,例如。
- (NSInteger)tableView: (UITableView*)tableView numberOfRowsInSection: (NSInteger)section {
if([tableView tag] == 1)
{
//do stuff for table1
return 10;
}
else if([tableView tag] == 2)
{
//do stuff for table2
return 20;
}
}
答案 2 :(得分:1)
UITableView
哪个主要表格查看并在主视图中添加此内容,添加一个UIView
并在新视图中添加UITableView
后设置为主视图的子视图.. < / p>
将新视图背景颜色设置为黑色并将alpha设置为0.85或另一个您在弹出视图中看到的颜色。
将代理和数据源提供给UITableView
并管理这两个tableview只是使用以下条件..
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (tableView == yourFirstTable) {
return [Array1 count];
}
else {
return [Array2 count];
}
}
我希望这可以帮助你...
:)
答案 3 :(得分:0)
在超级视图上添加第二个表视图.....
答案 4 :(得分:0)
这是你必须要做的。点击按钮,addSubView
该特定框架中的UITableView
。请务必将其添加到UITableView
上,以便可见。如果您愿意,可以为其设置动画,使其看起来像 popoup 。希望这能给你一般的想法:) ...还有别的请问...
答案 5 :(得分:0)
您可以添加表格视图作为主视图的子视图。创建一个UIViewController
类的类,并在那里添加第一个UITableView
作为子视图。然后点击按钮,您可以添加第二个UITableView
作为同一UIViewController
的子视图。您可以从底部带一个带有滑动动画的表格视图,并在此表格视图后面添加一个叠加视图。
答案 6 :(得分:0)
有两种方法可以解决这个问题,但从UX的角度来看,最好为下拉表创建一个单独的表,使用适当的数据设置数据源。当用户从主表中选择一个单元格时。然后将小tableview作为子视图添加到主视图中。现在,为了更好的用户体验,您可以在这些表之间添加半透明视图,或者将大表的userInteractionEnable设置为NO,同时显示小表。
答案 7 :(得分:0)
在每个UITableView委托方法上,检查表视图标记值并相应地继续。
if (tableView.tag == 1) {
// load data for the large table view
}
if (tableView.tag == 2) {
// load data for the small table view
}
点击按钮,将小表视图隐藏值设置为NO - 这将显示小表视图。
答案 8 :(得分:0)
我会创建一个自定义视图类,并将UITableView作为子视图,原因如下:
<强> 1。可重复使用的强>
<强> 2。易于维护,如果您想要更改视图的外观或添加其他选项,您只需修改自定义视图,它的所有实例都将更新。
第3。团强>
话虽如此,以下过程就是我通常如何创建这些自定义视图:
1)创建一个新的自定义视图类
2)在自定义视图中,在.h文件的顶部创建协议,在协议声明中,指定符合此委托协议的任何视图控制器必须实现的方法。对我来说,这通常意味着我创建了选项选择方法和自定义视图关闭方法
@protocol CustomViewDelegate ....
// all conforming View Controller must implement these methods.
// in your case, you probably only need the optionChosen method
-(void)optionChosen;
-(void)customViewClose;
@endprotocol
3)在自定义视图.h文件的@interface部分中,声明一个带有协议类型的“id”变量:
id<CustomViewDelegate> delegate;
4)为你的id委托变量
创建一个属性5)在你的.h文件中创建一个UITableView
6)创建一个set-entity方法,将传入的实体作为参数,这允许您对该实体执行操作,而不将其发送回原始视图控制器。
7)在此自定义类的.m文件
中实现表视图8)选择一个选项后,您可以调用委托方法“optionChosen”:
// psuedo-code
-(void)tableView:(UITableView *)tableView didSelectRowAtIndePath:(NSIndexPath *)indexPath
{
[delegate optionChosen];
}
9)最后要做的是在视图控制器中创建showCustomView()和hideCustomView():
// psuedo code
-(void)onLongPressOnTableRow
{
// pass the custom entity to the custom view for updating
[customeView setEntity:[arrEntities objectAtIndex:row]];
[self showCustomView];
}
-(void)showCustomView
{
[UIView animateWithDuration:0.5 actions:^{
customView.alpha = 1;
}];
}
-(void)hideCustomView
{
[UIView animateWithDuration:0.5 actions:^{
customView.alpha = 0;
}];
}