0

我有一张桌子,里面有三个部分。每个部分有 4 行。我希望每个部分有一个选择,这使得整个表格有 3 个选择。我正在尝试使用以下功能来执行此操作,这些功能重置当前部分并设置新选择。

- (void)selectOneRow:(int)row inSection:(int)section
{
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];

    for(int i = 0; i < [[self.dataSource objectAtIndex:section] count]; ++i) {
        NSIndexPath *ip = [NSIndexPath indexPathForRow:i inSection:section];
        [self.table deselectRowAtIndexPath:ip animated:NO];
        //[[self.table cellForRowAtIndexPath:ip] setHighlighted:NO];
    }

    [self.table selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
    //[[self.table cellForRowAtIndexPath:indexPath] setHighlighted:YES];

    [self disableInteractionForRow:row inSection:section];
}

- (void)disableInteractionForRow:(int)row inSection:(int)section
{
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];

    for(int i = 0; i < [[self.dataSource objectAtIndex:section] count]; ++i) {
        NSIndexPath *ip = [NSIndexPath indexPathForRow:i inSection:section];
        [[self.table cellForRowAtIndexPath:ip] setUserInteractionEnabled:YES];
    }

    [[self.table cellForRowAtIndexPath:indexPath] setUserInteractionEnabled:NO];
}

选择第一部分的第一行的示例是:

[self selectOneRow:0 inSection:0];

这在第一次时效果很好,但每次后记都会关闭该行,使该部分留空。我怎样才能解决这个问题?还是我一开始就错了?谢谢你的帮助。

** 编辑添加图像 **

在此处输入图像描述

4

1 回答 1

1

听起来你试图让它变得太复杂。不要将三个选项放在一个包含三个部分的表格视图中,而是制作三个单独的表格和三个单独的视图。

例如,转到 iPhone 上的设置应用程序。点击“邮件、通讯录、日历”,然后向下滚动到“邮件”部分标题下的“显示”、“预览”和“最小字体大小”选项。对于这些设置中的每一个,都会使用新的表视图控制器推送一个新视图,您只能选择其中一个选项然后返回。这样可以保持界面清洁,更不用说您的代码了。

希望像这样重组它会更好地为您服务。我不知道我是否可以说您现在的做法是错误的,但这与 Apple 构建其应用程序的方式不一致。

于 2012-05-24T20:36:35.390 回答