我的应用程序的故事板如下所示。
在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,以防万一我的问题不太清楚。
最佳答案
在您的代码中删除:
- (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/