将 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的主要内容,如果未能解决你的问题,请参考以下文章