0

コードをきれいに保ち、ファイルの数を抑えようとしています。UITableViewController を使用していますが、その上に別のビューをロードしたいと考えています。これはかなり簡単だと思いました:

(1) .h ファイルに IBOutlet を作成する

@interface MyViewController : UITableViewController {
    ...
    UIView *downloadView;
    ...
}
...
@property (nonatomic, retain) IBOutlet UIView *downloadView;
...

(2) IB のビューにリンクする

(3) 次のようにします。

self.view = downloadView;

また

[self.view addSubview:self.downloadView];

しかし、それは私にはうまくいきません。私が行った場合

[self.tableView removeFromSuperview];

その後、テーブルビューは消えますが、ペン先からビューを追加する方法がわかりません。私はtableViewのすべてをプログラムで行っていますが、それが問題になるとは思いませんでした。そして、 UITableViewController サブクラス化 UIViewController を使用すると、 addSubview などを使用しても問題ないと思いました。私は何が欠けていますか?これはそれほど難しくないはずですよね?

更新:次のようにすると:

UIView *newView = [[UIView alloc] initWithFrame:self.view.frame];
newView.backgroundColor = [UIColor greenColor];
[self.view addSubview:newView];

それは(ほとんど)私が望むことをします。これは、IB からビューを接続する方法を台無しにしているということですか? IB では、fileOwner のクラスを MyViewController に設定し、downloadView と (IB で) 作成したビューを接続します。それは私がしなければならないすべてですよね?

4

1 に答える 1

-1

階層のどこにビューを追加するかの問題だと思います。これを試すことができます:

[UIWindow addSubview:self.downloadView]; 

表示されるかどうかを確認します。多分、

[self.tableView addSubview:self.downloadView];

そうでなければ、あなたは正しい考えを持っていると思います。

于 2009-07-06T15:24:28.023 に答える