0

私のアプリのストーリーボードは次のようになります。

ここに画像の説明を入力

の配列で定義された Web サイトのリストがありますPageViewController。私が今やろうとしているのは、ユーザーがテキストフィールドにインデックス番号を入力できるようにするMainViewControllerことです.ボタンをタップすると、ページビューコントローラーで、配列から対応するWebサイトが表示されます.以下は私のコードです(私は知っていますこのアプリには欠陥があります。これは単なるデモです)、

PageViewController.m

#import "MainViewController.h"
#import "PageViewController.h"

@interface MainViewController ()

@property (nonatomic, assign) NSInteger selectedIndex;

@end

@implementation MainViewController

- (IBAction)buttonPressed:(id)sender
{
    self.selectedIndex = [self.textField.text integerValue];
    [self performSegueWithIdentifier:@"ToNext" sender:nil];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    PageViewController *pageVC = [segue destinationViewController];
    pageVC.index = self.selectedIndex;
}

@end

プロパティはselectedIndex、ユーザーが正しく入力した数値を取得します。に渡されたときに問題が発生しpageVCます。

渡された値を取得するために、indexNSIntegerタイプと呼ばれる別のプロパティがあります。PageViewController問題は、常に 0 が表示されることです。

ここで何が欠けているのか誰か教えてもらえますか? 提案をいただければ幸いです。

また、質問が明確でない場合に備えて、ここに問題を示すプロジェクトをアップロードしました。

4

1 に答える 1

1

コードで次を削除します。

- (void)awakeFromNib
{
    [super awakeFromNib];
    [self createPages];
    self.dataSource = self;

    NSLog(@"Index = %lu", self.index);
    [self setViewControllers:[NSArray arrayWithObject:self.pages[self.index]] direction:UIPageViewControllerNavigationDirectionForward animated:true completion:nil];
}

そしてそれを次のように置き換えます:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self createPages];
    self.dataSource = self;

    NSLog(@"Index = %d", self.index);
    [self setViewControllers:[NSArray arrayWithObject:self.pages[self.index]] direction:UIPageViewControllerNavigationDirectionForward animated:true completion:nil];
}
于 2013-10-23T08:20:43.477 に答える