0

我有一个用于列出用户的表格视图,单击一个按钮我想显示另一个表格视图作为弹出窗口......就像操作表一样......任何帮助表示赞赏......我在这里上传一个示例图像。 ..!

ON Show picker button click show table view as pop up

4

9 回答 9

2

我会为迷你表创建一个单独的 UITableViewController,一旦用户从大表中选择了一个单元格,就将其提供给相关的数据源。然后将迷你表的视图作为子视图添加到主视图中,可能在迷你表和大表之间有一个透明的 UIView,这样用户手势就不会传递到大表。

[编辑] 您可以将同一个视图控制器作为多个表视图的数据源和委托。您可能已经注意到,所有 UITableView 的委托方法都提供了对原始 tableview 的引用,因此您可以区分大表和小表,即每个表可以有不同的行数、不同的单元格等。

它与我上面的建议非常相似,只是它不那么干净,您必须在每个委托方法中具有如下代码:

if(tableView.tag == kBigTableTag) { ... } 
else if (tableView.tag == kMiniTableTag) { ... }

您仍然需要将迷你表添加为视图控制器视图的子视图,就像我上面解释的那样。我建议您为迷你表使用单独的 UITableViewController ,除非您有充分的理由不这样做?

希望所有这些都有意义:)

于 2012-10-11T06:11:06.547 回答
2

假设您有两个 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;
       }

}
于 2012-10-11T06:47:32.467 回答
1

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];
    }
}

我希望这可以帮助你...

:)

于 2012-10-11T07:06:18.097 回答
0

在超级视图上添加第二个表视图.....

于 2012-10-11T06:07:59.413 回答
0

这是你必须做的。在按钮上单击 ,addSubViewUITableView该特定框架中。确保将其添加到UITableView以使其可见。如果您愿意,可以对其进行动画处理,使其看起来像一个弹出窗口。希望这能给你一个大致的想法:) ...还有什么请问...

于 2012-10-11T06:10:54.957 回答
0

您可以添加一个表格视图作为主视图的子视图。创建一个类型类UIViewController并首先添加UITableView为子视图。然后点击按钮,您可以将第二个添加UITableView为相同的子视图UIViewController。您可能可以将这个表格视图从底部滑动动画,并在这个表格视图后面添加一个覆盖视图。

于 2012-10-11T06:12:48.897 回答
0

有 1-2 种方法可以解决这个问题,但从 UX 的角度来看,最好为下拉表创建一个单独的表,并使用适当的数据设置数据源。当用户从主表中选择了一个单元格时。然后将小表视图作为子视图添加到主视图中。现在为了更好的用户体验,您可以在这些表之间添加半透明视图,或者将大表的 userInteractionEnable 设置为 NO,而小表可见。

于 2012-10-11T06:37:16.430 回答
0

在 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 - 这将显示小表格视图。

于 2012-10-11T06:46:36.327 回答
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;
    }];
}
于 2012-10-11T09:03:33.650 回答