我想在警报视图中显示表格视图。此表视图包含分段控件。这些分段控件用于打开/关闭音频、图像、文本。所以会有3个带有分段控件的单元格。
这该怎么做
请帮帮我
感谢你
我想在警报视图中显示表格视图。此表视图包含分段控件。这些分段控件用于打开/关闭音频、图像、文本。所以会有3个带有分段控件的单元格。
这该怎么做
请帮帮我
感谢你
添加 UISegmentedControls(或 UISwitches,我个人建议使用它作为简单的开/关选项)很容易使用附件视图属性放入表格视图单元格。
你的视图控制器(或者你用来控制这个东西的任何对象)必须实现 UITableViewDataSource 协议。
@interface MyViewController : UIViewController<UITableViewDataSource, UITableViewDelegate> {}
@end
在 tableView:cellForRowAtIndexPath 中添加控件:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString* const SwitchCellID = @"SwitchCell";
UITableViewCell* aCell = [tableView dequeueReusableCellWithIdentifier:SwitchCellID];
if( aCell == nil ) {
aCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SwitchCellID] autorelease];
aCell.textLabel.text = [NSString stringWithFormat:@"Option %d", [indexPath row] + 1];
aCell.selectionStyle = UITableViewCellSelectionStyleNone;
UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
aCell.accessoryView = switchView;
[switchView setOn:YES animated:NO];
[switchView addTarget:self action:@selector(soundSwitched:) forControlEvents:UIControlEventValueChanged];
[switchView release];
}
return aCell;
}
或者,如果您设置了分段控件,请将上面的 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];
}
它看起来像这样:
上面的答案效果很好,但在 iPad 上,这条线myView.backgroundColor = [UIColor clearColor];
似乎并没有消除桌子周围的灰色矩形区域。我发现以下内容可以完成这项工作:tableView.backgroundView.alpha = 0.0;