我的应用程序的故事板如下所示。



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中有另一个名为NSIntegerPageViewController类型的属性,用于检索传入的值。问题是它总是显示0。

谁能告诉我我在这里想念的东西吗?我真的很感谢任何建议。

我还上传了一个项目,演示我的问题here,以防万一我的问题不太清楚。

最佳答案

在您的代码中删除:

- (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];
}

关于ios - 将NSInteger类型的变量传递给UIPageViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19536254/

10-12 15:06