1

UITableViewControllerサブクラス内からパラメータにアクセスするにはどうすればよいUITableViewCellですか?

フォント サイズのパラメータがありますUITableViewController(つまり、ユーザーはフォント サイズを変更できます)。そのためlayoutSubviews、カスタム サブクラスのメソッドは、UITableViewCellそれ自体を再レイアウトする必要があるときに最新のフォントにアクセスする必要があります (ラベルの位置はフォントに依存するため)。

私の質問は、私のカスタム サブクラス化された からUITableViewCell、具体的にはlayoutSubviewsメソッド内で、からのインスタンス変数である「uiFont」パラメーターにどのようにアクセスしますUITableViewControllerか?

4

2 に答える 2

4

これを行うにはいくつかの方法があります: アプリケーション デリゲートのプロパティを介して UITableViewController にアクセスする ( を使用してどこからでもアクセスできます[UIApplication sharedApplication].delegate)、セルを で作成するときにセルに UITableViewController への参照を与えるtableView:cellForRowAtIndexPath:か、 UITableViewController が見つかるまでセル ビューを表示します。

しかし、実際には、これはおそらく貧弱なアーキテクチャです。おそらくreloadData、テーブル ビューを呼び出してすべてのセルを再作成し、フォントを に設定する必要がありtableView:cellForRowAtIndexPath:ます。または、フォント設定を保持する必要がある場合は、それを NSUserDefaults に保存して、セルにリッスンさせることができますNSUserDefaultsDidChangeNotification

于 2011-03-14T01:31:18.580 に答える
2

セル内からオブジェクトにアクセスするUITableViewControllerことは、設計の観点からは適切なアプローチではありません。UIFontオブジェクトを格納するために、テーブル セル自体に ivar を作成する必要があります。

@interface CustomCell : UITableViewCell {
    UIFont *font;
}
@property (nonatomic, retain) UIFont *font;

次に、tableView:cellForRowAtIndexPathメソッドで、セルのフォントを設定します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    [cell setFont:uiFont];
    ...
}
于 2011-03-14T01:27:39.800 に答える