我的应用程序的故事板看起来像这样。
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的项目。
答案 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];
}