0

UINavigationController からルート UITableViewController にデータを渡すにはどうすればよいですか? ECSlidingViewController ( https://github.com/edgecase/ECSlidingViewController ) を実装しました。ユーザーは、UINavigationController の上にある tableView から情報を表示したい、さまざまな URL に対応するメニュー内のセルの 1 つを選択します。(UINavigationControllerをストーリーボードにドラッグするデフォルトの組み合わせを知っています)。スライディングメニューからnavigationControllerにデータを取得できるようになりましたが、同じ情報をテーブルビューに渡そうとしていますか?

私のメニューには次のものがあります。

 UINavigationController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"NavigationTop"];
    newTopViewController = [(NavigationTopViewController*)newTopViewController initWithCinema:self.myCinema];

UINaviationController で:

    - (id)initWithCinema:(Cinema *)cinema {
    self = [super init];
    if(self) {
        _myCinema = [[Cinema alloc] init];
        _myCinema = cinema;
    }
    return self;
}

- (void) viewDidLoad {
    [super viewDidLoad];

    // this log works I get the info to here.
    NSLog(@"url(navigation):%@", self.myCinema.cinemaURL);

    //MoviesTableViewController *moviesTableViewController = [[MoviesTableViewController alloc] initWithCinema:self.myCinema];

    //UITableViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MoviesTable"];

    //NavigationTopViewController *newTopViewController = [[NavigationTopViewController alloc] initWithCinema:self.myCinema];
    //newTopViewController = [(MoviesTableViewController *)newTopViewController initWithCinema:self.myCinema];
    //[self performSegueWithIdentifier:nil sender:self.myCinema];
    [self prepareForSegue:nil sender:self.myCinema.cinemaURL];

}

私のUITableViewで:

  - (void)setCinema:(Cinema *)cinema {
    // works here too
    NSLog(@"Table(setCinema):%@", cinema.cinemaURL);
    self.myCinema = [[Cinema alloc] init];
    if(!cinema) {
        cinema.cityIndex = kAstanaIndex;
        cinema.name = kKeruen;
        cinema.nameForText = kKeruenText;
        cinema.cinemaURL = kKeruenURL;
        cinema.cinemaURLTomorrow = kKeruenURLtomorrow;
    }
    self.myCinema = cinema;
    // works here too!!!
    NSLog(@"Table(myCinema):%@", self.myCinema.cinemaURL);
}

ただし、viewDidLoad ではなくなっています。

- (void)viewDidLoad
{
    [super viewDidLoad];

    // set delegate to self
    self.tableView.delegate = self;

    // set loading theater's url


// does not work here: I GET NULL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    NSLog(@"url(moviesTable):%@", self.myCinema.cinemaURL);
    _model = [[MovieModel alloc] initWithURL:self.myCinema.cinemaURL];
}

少なくとも私にとっては、私が試した方法はどれもありません(ナビゲーションでコメントしました...)。何か提案があれば教えてください。前もって感謝します。

4

1 に答える 1