iOS - 如何以编程方式向 UITableView 添加两行开关?

发布于 2024-12-09 05:56:06 字数 1476 浏览 2 评论 0原文

我是一个iOS开发新手。我正在尝试使用以下代码以编程方式将两个开关添加到表中 -

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

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
if(indexPath.section== 0){

    fooddrinkSettingSwitch=[[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];


    [fooddrinkSettingSwitch addTarget:self action:@selector(preferenceSettingAction:) forControlEvents:UIControlEventValueChanged];
    [cell addSubview:fooddrinkSettingSwitch];
    cell.accessoryView = fooddrinkSettingSwitch;

    apparelSettingSwitch=[[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];


    [apparelSettingSwitch addTarget:self action:@selector(preferenceSettingAction:) forControlEvents:UIControlEventValueChanged];
    [cell addSubview:apparelSettingSwitch];
    cell.accessoryView = apparelSettingSwitch;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;    
}


//get the dictionary object
NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"SettingTitle"];
NSString *cellValue = [array objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

return cell;
}

但是,它显示 Food &饮料作为开关,服装作为纽带。我做错了什么?

I am an iOS development newbie. I am trying to add two switches to a table programmatically using the following code -

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

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
if(indexPath.section== 0){

    fooddrinkSettingSwitch=[[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];


    [fooddrinkSettingSwitch addTarget:self action:@selector(preferenceSettingAction:) forControlEvents:UIControlEventValueChanged];
    [cell addSubview:fooddrinkSettingSwitch];
    cell.accessoryView = fooddrinkSettingSwitch;

    apparelSettingSwitch=[[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];


    [apparelSettingSwitch addTarget:self action:@selector(preferenceSettingAction:) forControlEvents:UIControlEventValueChanged];
    [cell addSubview:apparelSettingSwitch];
    cell.accessoryView = apparelSettingSwitch;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;    
}


//get the dictionary object
NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"SettingTitle"];
NSString *cellValue = [array objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

return cell;
}

However, it displays Food & Drink as a switch and Apparel as a link. What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

脸赞 2024-12-16 05:56:06

您的方法的一个问题是 UITableViewCell 只能有一个 accessoryView。您可能想要创建 UITableViewCell 的自定义子类来实现您所追求的目标。

One problem with your approach is that a UITableViewCell can have only one accessoryView. You probably want to make a custom subclass of UITableViewCell to achieve what you're after.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文