3

我正在尝试使用从故事板构建的场景来构建应用程序的演练。

所以我填充了我的视图控制器数组,称为页面:

@interface PVCPagesViewController () {
    NSMutableArray *pages;
}

@property (retain, nonatomic) NSMutableArray *pages;
@property (strong, nonatomic) UIPageViewController *pageController;


@end

在 viewDidLoad() 中:

self.pages = [[NSMutableArray alloc] init];

UIViewController *page1 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page1"];

UIViewController *page2 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page2"];

UIViewController *page3 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page3"];

UIViewController *page4 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page4"];

self.pages = [[NSMutableArray alloc] initWithObjects:page1, page2, page3, page4, nil];

但是当我要从 viewControllerAfterViewController() 的数组中加载另一个视图控制器时:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {

    NSInteger index = [self.pages indexOfObject:viewController];

    index++;

    return [self.pages objectAtIndex:index];
}

我得到了一个有效的 viewController,我在数组中看到了它,但是当我尝试 objectAtIndex 时,它返回 nil?

(lldb) po self.pages
<__NSArrayM 0x170243cc0>(
<UIViewController: 0x13cd05370>,
<UIViewController: 0x13cd06030>,
<UIViewController: 0x13ce00000>,
<UIViewController: 0x13ce11b60>
)

(lldb) po viewController
<UIViewController: 0x13cd05370>
(lldb) po [self.pages indexOfObject:viewController];
<nil>
(lldb) 

是什么赋予了?提前致谢

4

2 回答 2

8

indexOfObject:不返回对象,这是po命令 ( print --object-description) 所期望的;它返回一个NSUInteger. 使用普通print命令:

(lldb) p (NSUInteger)[self.pages indexOfObject:viewController];
0

使用po时,索引 0 被解释为对象指针。0 指针是nil,所以这就是打印的内容。如果它是任何其他值,调试器将不知道如何处理它,因为它几乎肯定不会是一个有效的对象指针。

于 2013-10-27T06:38:49.283 回答
1

试试下面这样: -

   (lldb) p (NSInteger) [self.pages 
   indexOfObject:viewController];
于 2013-10-27T07:23:57.317 回答