9
我需要在某些項目中使用NSPageController
,但我不知道它是如何工作的,有沒有人有時間給我一些簡單的教程來顯示我,因爲文檔沒有幫助我。OS X上的Cocoa的NSPageController教程
忘了提:我的工作Mac project
(不iOS
)
我需要在某些項目中使用NSPageController
,但我不知道它是如何工作的,有沒有人有時間給我一些簡單的教程來顯示我,因爲文檔沒有幫助我。OS X上的Cocoa的NSPageController教程
忘了提:我的工作Mac project
(不iOS
)
新建Cocoa應用程序 - 項目。在界面構建器中打開MainMenu.xib
,並將圖片加入和標籤對象到您的應用程序窗口。還要添加頁面控制器對象。
集頁面控制器的以點形象嘛。
Images.xcassets
我以前在此示例項目三幅影像:
添加引用網點頁面控制器,標籤和形象嘛。將MyAppDelegate
設置爲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
一些初始化:
- (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;
}
按ctrl
和MyAppDelegate.h
文件用鼠標拖動到_pageController連接你的頁面控制器用來_pageController。
沒有得到這個工作。我懷疑它是如何添加圖像的。我只是將它們從查找器拖到xcasset。 NSlog顯示數組中的圖像。但_pageController返回空,當我檢查它的排列Objects .. – markhunte 2013-11-15 19:37:10
@markhunte我添加圖像到.xcassets使用導入...,如果它很重要,從彈出菜單中單擊與資產內容列表中的第二個鼠標按鈕 – juniperi 2013-11-15 19:44:28
剛纔也這樣做。一樣。我正在使用您的確切代碼。 – markhunte 2013-11-15 19:45:22