将 NSInteger 类型的变量传递给 UIPageViewController

Posted

技术标签:

【中文标题】将 NSInteger 类型的变量传递给 UIPageViewController【英文标题】:Passing a variable of NSInteger type to a UIPageViewController 【发布时间】:2013-10-23 08:12:24 【问题描述】:

我的应用的情节提要如下所示。

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

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

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

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

【问题讨论】:

【参考方案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];

【讨论】:

以上是关于将 NSInteger 类型的变量传递给 UIPageViewController的主要内容,如果未能解决你的问题,请参考以下文章

将数据从子控制器传递到 PageViewController

将绑定传递给类型属性包装器的变量 - 失去基础类型

如何将不同的变量传递给相同类型的 QML

将对象类型变量传递给另一个类但保持结构?

如何将变量传递给 const char 类型?

如何将变量结构类型传递给 C 中的函数