2

私のiPadアプリのストーリーボードのデザインでは、2つのテーブルビューが追加されています。

1つのテーブルビューはフォルダ名を表示するためのもので、もう1つのテーブルビューはファイル名を表示するためのものです。フォルダテーブルビューセルが選択されるたびに、選択されたフォルダ内のファイルが他のテーブルビュー(ファイルテーブルビュー)に表示される必要があります。

私の問題は

私は混乱しています

  • の各テーブルビューにデリゲートとデータソースを追加するにはどうすればよいViewControllerですか?または、ViewController以外のカスタムクラスの各テーブルビューにデータソースとデリゲートを追加することは可能ですか?

  • セルの選択を処理する方法は?

助けてください !

4

2 に答える 2

5

まず最初に:画面全体を占めるプッシュされたviewControllerにファイルを表示してみませんか?私にはもっと直感的に思えます。

2つのtableViewでそれを実行し、それらが次よりも動的セルを使用すると仮定した場合:
1、 ViewControllerの.hファイル内

次のように2つのtableViewプロパティを指定します。

@property (weak, nonatomic) IBOutlet UITableView *foldersTableView;
@property (weak, nonatomic) IBOutlet UITableView *filesTableView;

UITableVIewの2つのデリゲートプロトコルを実装する

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> 

2、2つのUITableViewをViewControllerに追加し、...

  • ...アウトレットを2つのテーブルビューにリンクします
  • ...属性インスペクターで、foldersTableViewのタグを1に設定し、filesTableViewを2に設定します
  • ...各UITableViewを選択し、接続インスペクターに移動して、2つのデリゲートメソッド(デリゲートとデータソース)をViewController(両方)にリンクします。

3、 ViewControllerの.mファイルで、次のようにUITableViewの3つのデータソースメソッドを実装します。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    if (tableView.tag == 1) {
       return theNumberOfSectionsYouWantForTheFolderTableView;
    } else {
       return theNumberOfSectionsYouWantForTheFilesTableView;
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    if (tableView.tag == 1) {
       return [foldersArray count];
    } else {
       return [filesArray count];
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
        if (tableView.tag == 1) {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the cell...
    return cell;

} else {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the cell...

    return cell;
}
}

4、選択を実装します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView.tag == 1) {
        //fill filesArray with the objects you want to display in the filesTableView...
        [filesTableView reloaddata];
    } else {
        //do something with the selected file
    }
}

私がすべてを正しく手に入れたことを願っています。@synthesizeXCode 4.4より前のバージョンを使用している場合は、.mファイルのプロパティを忘れないでください。

于 2012-08-05T10:26:33.003 に答える
0

複数のテーブルを使用している場合は、必要に応じて非表示にすることを忘れないでください。

- (void)viewWillAppear:(BOOL)animated
{
    [self.table2 setHidden:YES];
    [self.table1 setHidden:NO];
    // Probably reverse these in didSelectRow
}
于 2012-08-10T19:26:54.070 に答える