多个UITableview索引栏

时间:2012-08-03 06:11:07

标签: iphone ios uitableview

我在我的代码中向我的视图中添加了两个UITableView。我正在将委托和数据源正确设置为self。我添加了所有委托方法,用于返回行数,行高,段数等。一切正常。我还为两个表添加了索引栏。现在问题是索引栏不适用于第一个表,而它对第二个表工作正常。

当我点击第一个表索引栏上的任何字符时,它会响应第二个表。我无法获得第一张桌子的动作。我还注意到如果我没有将第二个表添加到我的视图中,那么我就可以获得第一个表的操作。

这是我的代码

- (void)viewDidLoad
{
    accountsTable = [[UITableView alloc] initWithFrame:CGRectMake(0,27, 320, 390)     style:UITableViewStylePlain];
    [accountsTable setDelegate:self];
    [accountsTable setDataSource:self];
    [self.view addSubview:accountsTable];
    accountsTable.backgroundColor = [UIColor clearColor];
    [accountsTable release];

    keyConnectionsTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 27, 320, 390) style:UITableViewStylePlain];
    [keyConnectionsTable setDelegate:self];
    [keyConnectionsTable setDataSource:self];
    [keyConnectionsTable setBackgroundColor:[UIColor clearColor]];
    [keyConnectionsTable setHidden:YES];
    [self.view addSubview:keyConnectionsTable];
}


- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return [NSArray arrayWithArray:[[UILocalizedIndexedCollation currentCollation] sectionIndexTitles]];
}

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    return [[UILocalizedIndexedCollation currentCollation] sectionForSectionIndexTitleAtIndex:index]; 
}

1 个答案:

答案 0 :(得分:0)

您需要区分两个表视图。要做到这一点,你可以简单地使用“tag”属性并将其设置为不同的值,或者你可以在视图控制器中为每个TableView设置一个@property

@property (strong) IBOutlet UITableView *tv1;
@property (strong) IBOutlet UITableView *tv2;

对于您的方法,您可以执行以下操作:

- (NSInteger)numberOfSectionsInTableView:(UITableView *) tableView {
    if (tableView == self.tv1) {
        return 1;
    } else if (tableView == self.tv2) {
        return 2;
    }
}

底线

你需要区分两个TableView,否则你会弄得一团糟:)