将NSInteger类型的变量传递给UIPageViewController

时间:2013-10-23 08:12:24

标签: ios objective-c ios7 uipageviewcontroller nsinteger

我的应用程序的故事板看起来像这样。

enter image description here

PageViewController中的数组中定义了一个网站列表。我现在要做的是让用户在MainViewController的文本字段中输入索引号,当你点击按钮时,在页面视图控制器中,显示数组中相应的网站。下面是我的代码(我知道这个应用程序存在缺陷。这只是一个演示),

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时会出现问题。

我在index中有另一个名为NSInteger PageViewController类型的属性来检索传入的值。问题是它总是显示0。

有人能告诉我这里缺少什么吗?我真的很感激任何建议。

如果我的问题不太明确,我还上传了一个展示我的问题here的项目。

1 个答案:

答案 0 :(得分: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];
}