Учебник NSPageController для Cocoa на OS X

мне нужно использовать NSPageController в каком-то проекте, но я понятия не имею, как это работает, у кого-нибудь есть время для простого учебника, чтобы показать мне, потому что документация мне не помогает.

забыл упомянуть: я работаю над Mac project (не iOS)

1 ответов


простой учебник режима книги NSPageController

создать новый Применение Какао-проект. Открыть MainMenu.xib в interface builder и добавить Изображения Хорошо и метка объекты в окне приложения. Также добавить Контроллер Страницы.


добавить несколько изображений к Images.xcassets

я использовал три изображения в этом образце проекта:

  • первый.формат PNG
  • второй.формат PNG
  • третье.формат PNG

MyAppDelegate.h

добавить ссылки розетки для Контроллер Страницы, метка и Изображения Хорошо. Set MyAppDelegate as NSPageControllerDelegate и добавить также NSArray для изображений. После этого MyAppDelegate.h файл должен выглядеть так:

@interface MyAppDelegate : NSObject <NSApplicationDelegate, NSPageControllerDelegate>

@property (assign) IBOutlet NSWindow *window;
@property (unsafe_unretained) IBOutlet NSPageController *pageController;
@property (weak) IBOutlet NSImageView *imageView;
@property (weak) IBOutlet NSTextField *infoLabel;

@property (nonatomic) NSArray *imageArray;

@end

MyAppDelegate.м

инициализации:

- (void)awakeFromNib {
    _imageArray = @[ [NSImage imageNamed:@"first"],
                     [NSImage imageNamed:@"second"],
                     [NSImage imageNamed:@"third"]];

    /* Set delegate for NSPageControl */
    [_pageController setDelegate:self];
    /* Set arranged objects for NSPageControl */
    [_pageController setArrangedObjects:_imageArray];
    /* Set transition style, in this example we use book style */
    [_pageController setTransitionStyle:NSPageControllerTransitionStyleStackBook];

    /* Set info label's text */
    NSString *info = [NSString stringWithFormat:@"Image %ld/%ld", ([_pageController selectedIndex]+1), [_imageArray count]];
    [_infoLabel setStringValue:info];
}

методы делегирования контроллера страницы:

- (void)pageController:(NSPageController *)pageController didTransitionToObject:(id)object {
    /* When image is changed, update info label's text */
    NSString *info = [NSString stringWithFormat:@"Image %ld/%ld", ([_pageController selectedIndex]+1), [_imageArray count]];
    [_infoLabel setStringValue:info];
}

- (NSString *)pageController:(NSPageController *)pageController identifierForObject:(id)object {
    /* Returns object's array index as identiefier */
    NSString *identifier = [[NSNumber numberWithInteger:[_imageArray indexOfObject:object]] stringValue];
    return identifier;
}

- (NSViewController *)pageController:(NSPageController *)pageController viewControllerForIdentifier:(NSString *)identifier {
    /* Create new view controller and image view */
    NSViewController *vController = [NSViewController new];
    NSImageView *iView = [[NSImageView alloc] initWithFrame:[_imageView frame]];

    /* Get image from image array using identiefier and set image to view */
    [iView setImage:(NSImage *)[_imageArray objectAtIndex:[identifier integerValue]]];
    /* Set image view's frame style to none */
    [iView setImageFrameStyle:NSImageFrameNone];

    /* Add image view to view controller and return view controller */
    [vController setView:iView];
    return vController;
}

и дело сделано


если ваш _pageController равен null / nil

подключите контроллер страницы к _pageController, нажав ctrl и перетащив с мышь _pageController в .