0

これは私の最初の iOS アプリです。

ナビゲーション コントローラーとタブ バー コントローラーを使用してアプリを作成しています。各タブバーコントローラーにはテーブルビューがあり、各セルが別のテーブルをロードするか、データを含むカスタムビュー (一連のラベルや画像など) をロードできます - コンテンツによって異なります。私はそれをプログラム的にやっています。

可能な限り柔軟にするためにこれを行っているため、ビューを互いに分離して、デザイン、レイアウト、または新しいデータがいずれかに追加された場合に新しいビューを非常に簡単にドロップできるようにすることをお勧めします。最終的なビュー。いつでも構成を変更できるように、これを作成しています。しかし、何かがおかしいのではないかと不安に思っています。

タブは関連する種類のデータ (音楽、映画、ビデオなど) を表し、表のセルは、より大きなタブ ベースのカテゴリ (アルバム アート、ツアーの日程、バンドの Twitter など) の同様の属性を表します。すべての情報が非常に異なる可能性があるため、このようにすることを考えました. テーブル ビューのセル選択の最後に、適切なデータを含むカスタム ビューが表示されます。ただし、常にテーブルビューから始まります。

AppDelegate.m

ViewController1 *vc1 = [[ViewController1 alloc] init];
ViewController2 *vc2 = [[ViewController2 alloc] init];
ViewController3 *vc3 = [[ViewController3 alloc] init];
ViewController4 *vc4 = [[ViewController4 alloc] init];
ViewController5 *vc5 = [[ViewController5 alloc] init];

UITabBarController *tbc = [[UITabBarController alloc] init];
NSArray *viewControllers = [NSArray arrayWithObjects:vc1, vc2, vc3, vc4, vc5];
[tbc setViewControllers:viewControllers];

// nav controller is a property because another initial method returns the the view if conditions are met
[self.nc = [[UINavigationController alloc] initWithRootViewController:tbc];
[[self window] setRootViewController:self:nc;
[self.window makeKeyAndVisible];

これにより、一連のビュー コントローラーがタブ バーに設定され、ビューに読み込まれるナビゲーション コントローラーに配置されます。

すべてのViewController#.mファイルは似ています。

- (void) viewDidLoad {
    [super viewDidLoad];

    self.tabBarController.title =@”Title”;
    TableViewController# *tvc = [[TableViewController# alloc] init];
    UIView *new = [[UIView alloc] initWithFrame:CGRectMake(0, 44, 420, 420);

    [self addChildViewController:tvc];
    [new addSubview:tvc.view];
    [self.view addSubview:new];

}

その後、テーブル ビューはセルを通常どおりロードします。現在、この問題が発生したため、セルは目的のビューに接続されていません。これは機能しますが、非常に汚くて正しくないように感じます。タブバーコントローラーはビューをロードしますが、その魂の目的は別のビューをロードすることですか? それは正しくありませんが、それが私がそれを理解できる唯一の方法です。後続のテーブルビューごとにこれを行う必要がありますか?! 100 個のビュー コントローラーが必要になるので、びっくりします。

また、CGRect の設定は正常に機能しているように見えますが、寸法を設定しても常にタブ バーの下にセルが配置されるため、空のテーブル フッターを配置する必要がありました。非常にエレガントではありません。3.5 インチと 4 インチのデバイスでは正常に動作するように見えますが、理由はわかりません。静的なビュー サイズを設定していますよね?

深く入り込む前に、このワークフローを最適化する方法をいくつか教えてください。ストーリーボードが答えである場合は、それに関する非常に優れたチュートリアルを教えてください。ストーリーボードを使用すると、物事を適切にリンクさせることができないようです。

4

2 に答える 2