Iphone 我可以在每个单元格中显示带有分段控件的表格视图和警报视图吗

Iphone 我可以在每个单元格中显示带有分段控件的表格视图和警报视图吗,iphone,uitableview,uialertview,uisegmentedcontrol,Iphone,Uitableview,Uialertview,Uisegmentedcontrol,我想在警报视图中显示表视图。此表视图包含分段控件。 这些分段控件用于打开/关闭音频、图像和文本。因此,将有3个细胞与分段控制 如何做到这一点 请帮帮我 感谢您使用accessoryView属性添加UISegmentedControls(或UISwitches,我个人建议使用一个简单的开/关选项)很容易放入表视图单元格 视图控制器(或用于控制此对象的任何对象)必须实现UITableViewDataSource协议 @interface MyViewController : UIViewContro

我想在警报视图中显示表视图。此表视图包含分段控件。 这些分段控件用于打开/关闭音频、图像和文本。因此,将有3个细胞与分段控制

如何做到这一点

请帮帮我


感谢您使用accessoryView属性添加UISegmentedControls(或UISwitches,我个人建议使用一个简单的开/关选项)很容易放入表视图单元格

视图控制器(或用于控制此对象的任何对象)必须实现UITableViewDataSource协议

@interface MyViewController : UIViewController<UITableViewDataSource, UITableViewDelegate> {}
@end
或者,如果设置了分段控件,请将上面的UISwitch内容替换为以下内容:

    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"On", @"Off", nil]];
    segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    segmentedControl.segmentedControlStyle = UISegmentedControlStylePlain;
    segmentedControl.frame = CGRectMake(75, 5, 130, 30);
    segmentedControl.selectedSegmentIndex = 0;
    [segmentedControl addTarget:self action:@selector(controlSwitched:) forControlEvents:UIControlEventValueChanged];
    aCell.accessoryView = segmentedControl;
    [segmentedControl release];     
我个人会将这些选项放在常规视图中(可能可以通过选项按钮进行翻转转换,就像许多iPhone应用程序一样)。我不认为把它放在一个警报视图是一个非常好的用户体验

然而,我写了几篇博客文章,展示了如何将各种视图放到警报视图中(这有点有用,但可以说不是)

所以,如果你真的下定决心要把它放在一个警告视图中,你完全可以这样做,就像这样:

- (void) doAlertWithListView {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Preferences" 
                                                    message:@"\n\n\n\n\n\n\n"
                                                   delegate:self 
                                          cancelButtonTitle:@"Cancel"
                                          otherButtonTitles:@"OK", nil];

    UITableView *myView = [[[UITableView alloc] initWithFrame:CGRectMake(10, 40, 264, 150) 
                                                        style:UITableViewStyleGrouped] autorelease];
    myView.delegate = self;
    myView.dataSource = self;
    myView.backgroundColor = [UIColor clearColor];
    [alert addSubview:myView];

    [alert show];
    [alert release];    
}
它看起来像这样:

- (void) doAlertWithListView {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Preferences" 
                                                    message:@"\n\n\n\n\n\n\n"
                                                   delegate:self 
                                          cancelButtonTitle:@"Cancel"
                                          otherButtonTitles:@"OK", nil];

    UITableView *myView = [[[UITableView alloc] initWithFrame:CGRectMake(10, 40, 264, 150) 
                                                        style:UITableViewStyleGrouped] autorelease];
    myView.delegate = self;
    myView.dataSource = self;
    myView.backgroundColor = [UIColor clearColor];
    [alert addSubview:myView];

    [alert show];
    [alert release];    
}

上面的答案很好,但在iPad上,
myView.backgroundColor=[UIColor clearColor];

似乎无法删除桌子周围的灰色矩形区域。我发现以下方法可以完成这项工作:
tableView.backgroundView.alpha=0.0

谢谢pasternack!!我会试试看…让你知道。再次感谢。。。!!您必须对“MyViewController”实现
UITableViewDelegate
,才能设置“myView.delegate=self;”我必须使用[alert setValue:myView forKey:@“accessoryView”];而不是[alert addSubview:myView];要使其运行,将tableView.backgroundView.alpha设置为0不是一个好主意。将视图改为nil<代码>tableView.backgroundView=nil