1

私のビューの構造は次のとおりです。カタログの各章の表紙を UITableView のヘッダー ビューに表示し、各章のサブセクションを対応するテーブル ビューに表示します。これらはすべて、ナビゲーション コントローラーの rootViewController であるページング UIScrollView に埋め込まれています。スタックは次のとおりです。

UINavigationController (controlled by CatMainViewController [UIViewController])
    UIScrollView       (controlled by CatMainViewController [UIViewController])
        UITableView    (controlled by SectionViewController [UITableViewController])

SectionViewController の didSelectRowAtIndexPath メソッドから CatMainViewController と通信して、ドキュメントをロードするビュー コントローラをプッシュするようナビゲーション コントローラに指示する方法を知りたいです。

私は次のようなことを試しました:

#import "CatMainViewController.m"
[CatMainViewController.self.navigationController pushViewController:newView animated:YES];

しかし、明らかにこれはうまく機能していません。どんな助けでも大歓迎です!ありがとう。

4

1 に答える 1

1

CatMainViewControllerインスタンスの参照をインスタンスに渡すことができSectionViewControllerます。次に例を示します。

/* SectionViewController.h */
@class CatMainViewController;

@interface SectionViewController

// ... some properties/methods
@property (nonatomic, assign) CatMainViewController *catMainVC;
// ... more properties/methods

@end

/* SectionViewController.m */
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // ... some code
    [self.catMainVC.navigationController pushViewController:someVC animated:YES];
}

/* CatMainViewController.m */
#import "SectionViewController.h"

// when creating the SectionViewController
SectionViewController *sectionViewController = ...;
sectionViewController.catMainVC = self;

@protocolこれは、Appleが使用するデリゲート/スキームに似ています。

于 2012-09-22T18:57:45.420 に答える