1

こんにちは、iOS プログラミングを勉強しています。

インターフェイスビルダーの使用について疑問があります。

私はtableViewControllerを作成し、.xibファイルも作成します

インターフェイス ビルダーで UITableView を確認できるようになりました。

ボタン、ラベルなどを含む myView というビューを追加する必要があります。

tableviewのヘッダーのように、myViewをtableViewの領域の一番上に設定したいです。

だから私はmyViewを作り、ボタン、ラベルなどを追加します.

そのビューをUITableViewにドラッグします。大丈夫です。

インターフェイスビルダーで myView が UITableView の一番上に設定されていることがわかります。

しかし、プログラムを実行すると、myView が表示されません。

もちろんIBOutletを使って配線し、プロパティを宣言して合成します。

しかし、私はこのようにNSLogを使用します

if(self.myView == nil)
   NSLog(@"omg it's nil!!!");

プロンプト領域に NSLog が出力されていることを理解できません。

インターフェイスビルダーでそのビューを作成するからです!

私はtableViewを見ることができます、もちろんセルを見ることができます。

myView が表示されないのはなぜですか??

どうすれば修正できますか??

インターフェイスビルダーを使用して修正する方法を知りたいです。

私を助けてください

4

3 に答える 3

2

インターフェイスビルダーを使用してこれが可能かどうかはわかりませんが、通常は手動でビューを作成し、次のように viewWillAppear メソッドの tableview ヘッダーに追加します。

    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, 60)];  
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10,self.tableView.bounds.size.width, 50)];
    label.text = [person getFullName];
    label.textAlignment = UITextAlignmentCenter;
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:25];
    label.shadowColor = [UIColor whiteColor];
    label.shadowOffset = CGSizeMake(0,1);
    [headerView addSubview:label];

    self.tableView.tableHeaderView = headerView;

より簡単な方法は、別のnibファイルでビューを作成し、次のようにテーブルビューをロードするときにテーブルヘッダーにロードすることです:

UIViewController *aViewController = [[UIViewController alloc] initWithNibName:@"MYXIBFILEHERE" bundle:nil];
self.tableView.tableHeaderView = aViewController.view;
于 2012-04-24T02:01:06.537 に答える
2

XCode 4.3 での私の経験:

最初に UITableView と UIView を同じスーパー UIView に配置する必要があります。次に、UIView を UITableView の上部にドラッグすると、ビューをフッターとして挿入するオプションが XCode によって強調表示されます。

完了したら、スーパービューから UITableView を切り離して削除できます。

于 2012-09-05T15:03:50.520 に答える
0

これを機能させることができた唯一の方法は次のとおりです。

  1. プロジェクトに新しい nib ファイルを追加します。テーブルのフッター/ヘッダーの外観を希望するように、nib ファイルにビューをレイアウトします。
  2. nib の File's Owner のクラスを UITableViewController のクラスに設定します。これは、この nib のビューを UITableViewController クラスの IBOutlet に接続できるようにするためです。
  3. UITableViewController に UIView IBOutlet を設定して、新しい nib のビューを指すようにします。
  4. UITableViewController クラスで、viewDidLoad で次のようにします。

(明らかに、コードが番号付きリストの直後にある場合、コードは正しくフォーマットされません。)

[[NSBundle mainBundle] loadNibNamed:@"statsFooterView" owner:self options:nil];
self.tableView.tableFooterView = myFooterView;
于 2015-05-12T12:33:30.953 に答える