2

小さな静的なテーブルビューをいくつか作成し、それらをスライドインとスライドアウトするパネルに追加しようとしています。パネルはプログラムで作成されるため、ストーリーボードを介してその中にテーブルビューを配置することはできません.とにかく、これが可能かどうかはわかりません.動作する静的テーブルビューをレイアウトできる唯一の方法は、テーブルビューコントローラーです.画面全体を占めます。

私が iOS 開発にかなり慣れていないとわからない場合は、ここでいくつかの基本的な概念を理解していない場合は、お気軽に説明してください。

4

3 に答える 3

6

もちろん可能です。これを行う方法は次のとおりです。

  1. をストーリーボードにドラッグTableViewControllerします。
  2. に設定しSizeFreeform識別子を追加してチェックを外しますResize View From NIB ここに画像の説明を入力
  3. テーブルビューを選択し、その内容を に設定しますStatic Cells。セルを設計します。
  4. サイズを設定する ここに画像の説明を入力
  5. インスタンス化する必要がある場合は、次のようにします。

    // I am using a UITableViewController as an example here
    // you probably would like to set your actual controller subclass instead
    UITableViewController *tableViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"staticTv"];
    UITableView *tableView = tableViewController.tableView;
    [self.view addSubview:tableView]; // Or add it to whatever view
    

楽しみ :)

于 2012-06-07T21:02:04.840 に答える
0

編集: @Alladinian は正しい答えを持っています! ビューコントローラーのプロパティを使用している場合、他のメソッドから呼び出す必要がある場合は、必ず割り当ててください。


動的テーブル ビュー セルよりも静的テーブル ビュー セルを使用する有効な理由をまだ見つけていません。iOS プログラミングを始めたとき、テーブル ビューはかなり怖かったです。最初のアプリYIKESで sqlite を使用しました。

そうです、UITableView データ ソースとデリゲートをインポートし、テーブル ビューをパネルに追加してフォローアップする必要があります (それが uiview であり、テーブル ビューをサブビューとして追加できると仮定します)。

とにかくViewController.hにはUITableViewDataSourceとUITableViewDelegateが含まれています。

@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>

UITableView次に、 aおよび an のプロパティを追加しますNSMutableArray

@property (strong, nonatomic) UITableView* tableView;

@property (strong, nonatomic) NSMutableArray* tableViewContents;

ViewController の .m で:

@synthesize tableView;

@synthesize tableViewContents;

内側ViewDidLoad

self.tableViewContents = [NSMutableArray arrayWithObjects:@"Cell 1",@"Cell 2",@"Cell 3",nil]; [self.tableView setDelegate:self] [self.tableView setDatasource:self]

.m ファイル内:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.tableViewContents.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSUInteger row = [indexPath row];
    index = row;

    static NSString *cellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
    }
cell.textLabel.text = [tableViewContents objectAtIndex:row];
    return cell;
}
于 2012-06-07T19:30:10.560 に答える
0

を管理するUITableViewControllerために必要な機能を提供するために、 は必要ありませんUITableView。あなたが探しているのは「デリゲート」パターンだと思います。のデリゲートとして任意UIViewControllerのものを割り当てることができますUITableView。たとえば、私が取り組んでいるアプリのいくつかのオプションを示す「静的」テーブルがあります。

@interface LBOptionsViewController : UIViewController <UITableViewDataSource,
                                                       UITableViewDelegate>

プログラムでテーブル ビューを作成している場合は、おそらくviewDidLoadまたはloadView(実際のビューを自分で作成している場合) で作成します。tableView を作成したら、デリゲートを割り当てます。

self.tableView.delegate = self;
self.tableView.dataSource = self;

次に、UIViewControllerサブクラスは次のようなデータ デリゲート メッセージを受け取ります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

これが役立つかどうかはわかりません。私はまだストーリーボードで遊んでいません。

于 2012-06-07T19:21:04.137 に答える