如何在iPhone中不使用UIPIckerviewcontroller创建下拉列表?

6 iphone ios ios5

我想像listview一样下拉列表,当我点击下拉按钮并使列表有一些内容.那么我选择的任何内容都将是标签的文字,任何人都可以帮助我.谢谢很多.

Nuz*_*ari 1

您可以使用弹出窗口来显示列表。在弹出窗口中,您可以创建表格视图来显示项目列表,当用户选择任何选项时,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];
Run Code Online (Sandbox Code Playgroud)

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];
                    }
}
Run Code Online (Sandbox Code Playgroud)

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

- (void)setTarget:(id)inTarget andSelector:(SEL)inSelector
{
    m_Target = inTarget;
    m_Selector = inSelector;
}
Run Code Online (Sandbox Code Playgroud)