0

コードのビューに 2 つの UITableView を追加しています。デリゲートとデータソースを自分自身に適切に設定しています。行数、行の高さ、セクション数などを返すすべてのデリゲート メソッドを追加しました。すべて正常に動作しています。また、両方のテーブルにインデックス バーを追加しました。問題は、インデックス バーが 1 番目のテーブルでは機能していないのに対し、2 番目のテーブルでは正常に機能していることです。

1 番目のテーブルのインデックス バーの任意の文字をクリックすると、2 番目のテーブルに反応します。1 番目のテーブルのアクションを取得できません。また、ビューに 2 番目のテーブルを追加しないと、最初のテーブルのアクションを取得できることにも気付きました。

これが私のコードです

- (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]; 
}
4

1 に答える 1

0

両方のテーブル ビューを区別する必要があります。これを行うには、単に「tag」プロパティを使用して別の値に設定するか@property、各 TableView のビュー コントローラーに を含めることができます。

@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を区別する必要があります。そうしないと、混乱することになります:)

于 2012-08-03T06:20:09.413 に答える