0

複数の とXIBがあるファイルとしてカスタム ウィジェットを作成しました。この XIB の所有者である対応する迅速なファイルには、これらの TableView へのアウトレットがあります。UITableViewUIButton

のビュー内のビューにこのウィジェットを追加しましたUIViewController。このコントローラーの対応する Swift ファイルで、各テーブルビューにdataSourceandを割り当てdelegate、ボタンにアクションを割り当てる必要があります。

私は長い間オンラインで探していました@IBInspectable varが、 s が進むべき道のようですが、 type UITableViewUITableViewDelegateまたはUITableViewDatasourceasの var を作成できないよう@IBInspectableです。

では、テーブルビューとボタンをどのように使用すればよいでしょうか? 誰かが正しいドキュメント、例、または説明に私を導くことができますか?

4

1 に答える 1

1

を使用する必要はありません@IBInspectableUITableViewDelegateメソッド内で各テーブル ソースを条件付きで使用するだけです。これを行う方法の 1 つを次に示します。

最初にストーリーボードのUITableViewController内にプロトタイプ セルを追加し、次にそのプロトタイプ セル内にUITableView独自のプロトタイプ セルを持つ を追加します。

次に、内側と外側の両方のテーブル ビュー セルの再利用識別子を次のように設定します。

外部テーブル ビュー セル: 外部テーブル ビュー セルの再利用識別子

内側のテーブル ビュー セル: 内部テーブル ビュー セルの再利用識別子

次に、その内側のテーブルビューのデータ ソースとデリゲートをUITableViewControllerの独自のデータ ソースとデリゲートにリンクします。

リンク データ ソースとデリゲート #1 リンク データ ソースとデリゲート #2

次に、UITableViewControllerクラス内で、テーブルの要素を条件付きで設定できます。次に例を示します。

- (void)viewDidLoad {
    [super viewDidLoad];
    dataSource1 = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", nil];
    dataSource2 = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == self.tableView) {
        return 80;
    } else {
        return 20;
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    if (tableView == self.tableView) {
        return dataSource1.count;
    } else {
        return dataSource2.count;
    }
}

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

    UITableViewCell *cell;

    if (tableView == self.tableView) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier" forIndexPath:indexPath];
    } else {
        cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier2" forIndexPath:indexPath];
    }

    // Configure the cell...
    if (tableView == self.tableView) {
        cell.textLabel.text = [dataSource1 objectAtIndex:indexPath.row];
    } else {
        cell.textLabel.text = [dataSource2 objectAtIndex:indexPath.row];
        cell.backgroundColor = [UIColor blueColor];
    }
    cell.textLabel.backgroundColor = [UIColor clearColor];

    return cell;
}

この場合、次の結果が生成されます。 最終結果

于 2015-02-14T07:32:33.050 に答える