0

カスタムを実装しようとしていUITableViewCellますが、セルサブクラスを使用して親のtableViewにアクセスしたいと考えています。テーブルビューを指定できるカスタムinitメソッドを作成している途中でしたが、エラーが発生しました。

のiVarを宣言しようとしました__weak UITableView *_tableView;が、宣言が重複しているというエラーが表示されました。ヘッダーファイルを調べたところUITableViewCell、確かに、次の宣言があります。

@private
    UITableView *_tableView;

iOSがこれを設定してくれると思うので、これは素晴らしいことですが、これを使用できるかどうか、またはこれがアプリを拒否する原因の1つであるかどうかを知りたいです。これに関するドキュメントはなく、オンラインのどこかに言及されていません。

何か案は?

4

2 に答える 2

0

プライベートivarにアクセスしようとしないのは正しいことです。わざわざスーパービューを渡すのではなく、テーブルセルで利用可能なものを使用してその囲みを見つけることをお勧めしますtableView

UIView + mytable.h:

#import <UIKit/UIKit.h>

@interface UIView (mytable)

- (UITableView *)mySuperTableView;

@end

UIView + mytable.m:

#import "UIView+dsltable.h"

@implementation UIView (dsltable)

- (UITableView *)mySuperTableView
{
    if ( [self isKindOfClass: [UITableView class]] )
        return (UITableView *)self;
    return [self.superview mySuperTableView];
}

@end
于 2013-02-28T03:48:35.880 に答える
0

いいえ、文書化されていないプライベートivarにアクセスすることはできません。別の名前でivarを追加するか、セルのスーパービューを取得してテーブルビューを取得する必要があります。

于 2013-02-28T03:50:34.093 に答える