6

当我单击下拉按钮并使列表包含一些内容时,我想像 listview 一样下拉列表。然后我选择的任何内容都将是标签的文本,任何人都可以帮助我。谢谢很多。

4

1 回答 1

1

您可以使用pop-over 来显示列表。在pop-over 中您可以创建tableview 来显示项目列表,当用户选择任何选项时,didSelectRowAtIndexPath 将被调用,通过此方法您可以发送选择的值并显示在标签中。

mainviewcontroller 中的代码,您要在其中显示下拉菜单。

if (m_OptionController !=nil)
        {
            [m_OptionController release]; m_OptionController = nil;

        }
        m_OptionController=[[OptionViewController alloc]init];
        [m_OptionController setTarget:self andSelector:@selector(displaySelectedOption:)];

        if(m_pPopOverController)
        {   
            [m_pPopOverController dismissPopoverAnimated:YES];
            [m_pPopOverController release];
            m_pPopOverController=nil;
        }

        m_pPopOverController=[[UIPopoverController alloc]initWithContentViewController:m_OptionController];

        [m_pPopOverController setPopoverContentSize:CGSizeMake(thePopOverFrame.size.width, thePopOverFrame.size.height) animated:NO];
        [m_pPopOverController presentPopoverFromRect:CGRectMake(theButton.frame.origin.x,0,40,40) inView:self
                            permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

OptionViewController 是一个 UIViewController,它将包含 UITableView.Populate UITableView 与数据(选项列表)。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   if ([m_Target respondsToSelector:m_Selector]) {
                        [m_Target performSelector:m_Selector withObject:nil];
                    }
}

不要忘记通过调用此方法设置目标,因此当用户选择任何选项时,mainviewcontroller 中的相应方法会在您想要选择的值的位置调用。

- (void)setTarget:(id)inTarget andSelector:(SEL)inSelector
{
    m_Target = inTarget;
    m_Selector = inSelector;
}
于 2012-06-04T10:45:27.600 回答