我有一个用于列出用户的表格视图,单击一个按钮我想显示另一个表格视图作为弹出窗口......就像操作表一样......任何帮助表示赞赏......我在这里上传一个示例图像。 ..!
9 回答
我会为迷你表创建一个单独的 UITableViewController,一旦用户从大表中选择了一个单元格,就将其提供给相关的数据源。然后将迷你表的视图作为子视图添加到主视图中,可能在迷你表和大表之间有一个透明的 UIView,这样用户手势就不会传递到大表。
[编辑] 您可以将同一个视图控制器作为多个表视图的数据源和委托。您可能已经注意到,所有 UITableView 的委托方法都提供了对原始 tableview 的引用,因此您可以区分大表和小表,即每个表可以有不同的行数、不同的单元格等。
它与我上面的建议非常相似,只是它不那么干净,您必须在每个委托方法中具有如下代码:
if(tableView.tag == kBigTableTag) { ... }
else if (tableView.tag == kMiniTableTag) { ... }
您仍然需要将迷你表添加为视图控制器视图的子视图,就像我上面解释的那样。我建议您为迷你表使用单独的 UITableViewController ,除非您有充分的理由不这样做?
希望所有这些都有意义:)
假设您有两个 UITableView table1 和 table2-
放
table1.tag = 1;
table2.tag = 2;
将委托和数据源属性设置为 self。
在任何委托方法中,您都可以按标签属性检测表。见下文,例如。
- (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;
}
}
UITableView
哪个主表视图并将其添加到您的主视图中,添加一个UIView
并在添加UITableView
新视图后设置为主视图的子视图..
将新视图背景颜色设为黑色,并将 alpha 设置为 0.85 或您在弹出视图中看到的其他颜色。
将 Delegate 和 Datasource 分配给两者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];
}
}
我希望这可以帮助你...
:)
在超级视图上添加第二个表视图.....
这是你必须做的。在按钮上单击 ,addSubView
在UITableView
该特定框架中。确保将其添加到UITableView
以使其可见。如果您愿意,可以对其进行动画处理,使其看起来像一个弹出窗口。希望这能给你一个大致的想法:) ...还有什么请问...
您可以添加一个表格视图作为主视图的子视图。创建一个类型类UIViewController
并首先添加UITableView
为子视图。然后点击按钮,您可以将第二个添加UITableView
为相同的子视图UIViewController
。您可能可以将这个表格视图从底部滑动动画,并在这个表格视图后面添加一个覆盖视图。
有 1-2 种方法可以解决这个问题,但从 UX 的角度来看,最好为下拉表创建一个单独的表,并使用适当的数据设置数据源。当用户从主表中选择了一个单元格时。然后将小表视图作为子视图添加到主视图中。现在为了更好的用户体验,您可以在这些表之间添加半透明视图,或者将大表的 userInteractionEnable 设置为 NO,而小表可见。
在 IB 中添加两个表格视图,一个是大的全屏视图,另一个是较小的一个,其 Z 值比大的大。为每个表视图设置一个标签。设置小表视图隐藏值为YES
在每个 UITableView 委托方法上,检查 Table View Tag 值并相应地继续。
if (tableView.tag == 1) {
// load data for the large table view
}
if (tableView.tag == 2) {
// load data for the small table view
}
点击按钮,将小表格视图隐藏值设置为 NO - 这将显示小表格视图。
出于以下原因,我会使用您的 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;
}];
}