1. ホーム
  2. iphone

[解決済み] iPhone UITableView PlainStyleでカスタム背景画像 - "完全に "コードで実行されます。

2022-02-15 11:59:33

質問

私はあちこちで、どうやら UITableView 静的な背景の問題はよく文書化されていますが、まっすぐな解決策を持つ人はいないのでしょうか? 今、私の TableViews のように、完全にコード化されています。

    UIViewController *tableViewController = [[TableViewController alloc] init];
navigationController = [[UINavigationController alloc]
                        initWithRootViewController:tableViewController];
[tableViewController release];
[window addSubview:navigationController.view];

このウィンドウは私のメイン UIWindow をアプリデリゲートでビルドしてくれます。ここから先、私はいくつかの異なる TableViews (によって制御される)。 navigationController ) を持つもの、いくつかは fetchedResultsControllers やカスタムセルなどです。カスタマイズをコードとIBに分散させるか、6つ以上の異なるNibを構築して維持する必要があるため、Nibを使用せず、完全にコードで行うことを希望しています。

を使用する例が見つからないのです。 tableViewController クラスは、独自の背景画像を設定します。もし、これを TableViews (拡張 UITableViewController ):

self.tableView.backgroundColor = backgroundColor;

もちろん、tableViewの背景を着色しています(ちなみに、セルの色も同様に着色していますが、セルの色は tableView しかし、私はセルが上下にスライドするような静的な背景画像を持ちたいと思っています。ユーザーのジェスチャーによって上下にスライドする背景画像ではなく、quot;background" を使用します。 まさにGroupedStyle tableViewが提供するものを、PlainStyle tableViewで実現するのです:) そして、IBではなく、コードを使用して行われます。

テーブルビューの背景色をクリアして、セルの色を設定するときに、透明にならないように設定する必要があるんでしょうね。そして、tableViewインスタンス内部からtableViewビューの下に背景画像をどうにかしてquot;sneak"するのでしょうか?

最良の解決策は、これを viewDidLoad または TableViewController 内の他の関数で行うことができ、すべてのカスタマイズを 1 つの場所に保持することでしょう。

誰か助けてくれるといいんだけど。) ありがとうございます。

解決方法は?

コントローラを UIViewController ではなく UITableViewController . 次に tableview プログラムによって、背景の imageView .

@interface SomeController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
  ...
  UITableView *tableView;
  ...
}
@property (nonatomic, retain) UITableView *tableView;
@end



@implementation SomeController

@synthesize tableView;

...

- (void)loadView {
    [super loadView];
    UIImageView *v = [[[UIImageView alloc] initWithFrame:self.view.bounds] autorelease];
    [v setImage:[UIImage imageNamed:@"table_background.png"]];
    [self.view addSubview:v];


    self.tableView = [[[UITableView alloc] initWithFrame:self.view.bounds] autorelease];
    [self.tableView setBackgroundColor:[UIColor clearColor]];
    [self.view addSubview:self.tableView];
}
...
@end