如何制作iOS下拉菜单

时间:2013-09-10 22:35:35

标签: ios drop-down-menu

如何在iOS中创建漂亮的下拉菜单。当用户单击导航栏中的按钮时,它应该打开。

我尝试创建一个表,但得到错误静态表视图仅在嵌入UITableViewController实例时有效。如果我使用UITableViewController,那么它必须是全宽的。

3 个答案:

答案 0 :(得分:1)

也许您可以尝试使用CollectionView而不是TableView,如果您需要针对iOS 4+的sopport,PSTCollectionView是一个不错的选择:)

答案 1 :(得分:1)

我所做的是添加一个按钮,在按钮上点击一个表格视图,只要选择任何行,行标题设置为按钮标题。

- (void)addOrganizationButton {

self.organizationButton =  [UIUtils createButtonWithFrame:CGRectMake(203,115,451,38)
                     titleText:@"Organization"
                          type:UIButtonTypeCustom
                   normalImage:nil selectedImage:nil
                        target:self
                          view:self.registerView
                           tag:0
                      selector:@selector(organizationButtonTap)];
self.organizationButton.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
[self.organizationButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
self.organizationButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
self.organizationButton.layer.borderWidth = 1;
}

//在按钮上显示表格视图

- (void)organizationButtonTap {
self.organizationTable = [[UITableView alloc]initWithFrame:CGRectMake(203,153, 451,220)];
self.organizationTable.layer.borderWidth = 1;
self.organizationTable.dataSource = self;
self.organizationTable.delegate = self;

[UIView animateWithDuration:1
                      delay:0.0
                    options: UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     CGRect frame = self.organizationTable.frame;
                     frame.size.height = 220;
                     self.organizationTable.frame = frame;
                 }
                 completion:^(BOOL finished){
                     NSLog(@"Done!");
                 }];

[self.registerView addSubview:self.organizationTable];
}

//表视图委托

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

return 1;//to be changed
}

- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section{

return 3;//get dictionary count
}

- (UITableViewCell *) tableView:(UITableView *)tableView
      cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell;
NSString *cellIdentifier=@"Cell Identifier";
cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil){

    cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    cell.accessoryType = UITableViewCellAccessoryNone;

}


cell.textLabel.text = [NSString stringWithFormat:
                       @"Section %ld, Cell %ld",
                       (long)indexPath.section,
                       (long)indexPath.row];
return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


[self.organizationButton setTitle:@"faf" forState:UIControlStateNormal];
[UIView animateWithDuration:1
                      delay:0.0
                    options:  UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     CGRect frame = self.organizationTable.frame;
                     frame.size.height = 0;
                     self.organizationTable.frame = frame;
                 }
                 completion:^(BOOL finished){
                     NSLog(@"Done!");
                 }];

}

答案 2 :(得分:0)

您可以为此准备自定义视图,并将其作为子视图添加到ViewController中。 使用UIView动画模拟“下拉”效果。