当前位置: 首页 > news >正文

ps做网站 大小seo培训价格

ps做网站 大小,seo培训价格,办理个人公司需要什么手续,深圳网约车哪个平台好今天到UITabBarController 结合 UIPickView, 这里一共有5个实现, 由浅到易。 其实在IB上面使用UITabBarController很简单, 就像平常拖控件一样拖到界面上面, 然后把Tab Bar Item拉到UITabBarController就可以增加底下的tab, 再分别指定底下tab就可以关联到对应的ViewController…

今天到UITabBarController 结合 UIPickView, 这里一共有5个实现, 由浅到易。

其实在IB上面使用UITabBarController很简单, 就像平常拖控件一样拖到界面上面, 然后把Tab Bar Item拉到UITabBarController就可以增加底下的tab, 再分别指定底下tab就可以关联到对应的ViewController。

BIDAppDelegate.h

#import <UIKit/UIKit.h>@interface BIDAppDelegate : UIResponder <UIApplicationDelegate>@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) IBOutlet UITabBarController *rootController;@end

 

BIDAppDelegate.m

#import "BIDAppDelegate.h"@implementation BIDAppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];// Override point for customization after application launch.[[NSBundle mainBundle] loadNibNamed:@"TabBarController" owner:self options:nil];    // 因为与IB做了IBOutlet的关联, 所以以这种方式加载xib到对应的controllerself.window.rootViewController = self.rootController;    // 与IB做了IBOutlet的关联self.window.backgroundColor = [UIColor whiteColor];[self.window makeKeyAndVisible];return YES;
}@end

 
=============================================================

BIDDatePickerViewController第一个Tab所对应的视图控制器:

BIDDatePickerViewController.h

#import <UIKit/UIKit.h>@interface BIDDatePickerViewController : UIViewController@property (strong, nonatomic) IBOutlet UIDatePicker *datePicker;
- (IBAction)buttonPressed;@end

 

BIDDatePickerViewController.m

#import "BIDDatePickerViewController.h"@implementation BIDDatePickerViewController- (IBAction)buttonPressed
{NSDate *selected = [self.datePicker date];    // 返回datapicker的时间NSString *message = [[NSString alloc] initWithFormat:@"The date and time you selected is: %@", selected];// 弹出UIAlertViewUIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Date and Time Selected"message:messagedelegate:nilcancelButtonTitle:@"Yes, I did."otherButtonTitles:nil];[alert show];
}- (void)viewDidLoad
{[super viewDidLoad];NSDate *now = [NSDate date];    // 获取当前的时间[self.datePicker setDate:now animated:NO];    // 在视图加载完后, 让datapicker显示当前的时间
}@end

 =============================================================

 BIDSingleComponentPickerViewController.h   第二个Tab所有对应的视图控制器:

#import <UIKit/UIKit.h>@interface BIDSingleComponentPickerViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>  // datapicker的所需要委托还有数据源
@property (strong, nonatomic) IBOutlet UIPickerView *singlePicker; @property (strong, nonatomic) NSArray *characterNames;  // datapicker的数据- (IBAction)buttonPressed; 
@end


 BIDSingleComponentPickerViewController.m

#import "BIDSingleComponentPickerViewController.h"@implementation BIDSingleComponentPickerViewController- (IBAction)buttonPressed
{// 获取picker选择的哪一行, 0是表示第一列NSInteger row = [self.singlePicker selectedRowInComponent:0];  NSString *selected = self.characterNames[row];    // 根据行数得到Array的对应索引的内容NSString *title = [[NSString alloc] initWithFormat:@"You selected %@!", selected];UIAlertView *alert = [[UIAlertView alloc] initWithTitle:titlemessage:@"Thank you for choosing."delegate:nilcancelButtonTitle:@"You're Welcome"otherButtonTitles:nil];[alert show];
}- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view from its nib.self.characterNames = @[@"Luke", @"Leia", @"Han", @"Chewbacca",@"Artoo", @"Threepio", @"Lando"];    // 为Array赋数值
}#pragma mark -
#pragma mark Picker Data Source Methods
// UIPickerViewDataSource必须实现的方法, 指定picker有多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{return 1;
}// 指定列有多少行
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{return [self.characterNames count];
}#pragma mark Picker Delegate Methods
// UIPickerViewDelegate必须的方法, 指定picker每一行显示的内容
- (NSString *)pickerView:(UIPickerView *)pickerViewtitleForRow:(NSInteger)rowforComponent:(NSInteger)component
{return self.characterNames[row];
}@end

================================================================

BIDDoubleComponentPickerViewController.h 第三个tab所对应的视图控制器:

#import <UIKit/UIKit.h>#define kFillingComponent 0
#define kBreadComponent   1@interface BIDDoubleComponentPickerViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>@property (strong, nonatomic) IBOutlet UIPickerView *doublePicker;
@property (strong, nonatomic) NSArray *fillingTypes;
@property (strong, nonatomic) NSArray *breadTypes;-(IBAction)buttonPressed;@end

 

BIDDoubleComponentPickerViewController.m

#import "BIDDoubleComponentPickerViewController.h"@implementation BIDDoubleComponentPickerViewController-(IBAction)buttonPressed
{// kFillingComponent与kBreadComponent是定义的宏, 用来标记是第几列的NSInteger fillingRow = [self.doublePicker selectedRowInComponent:kFillingComponent];    // 返回第kFillingComponent列被选中的行NSInteger breadRow = [self.doublePicker selectedRowInComponent:kBreadComponent];    // 返回第kBreadComponent列被选中的行
    NSString *filling = self.fillingTypes[fillingRow];NSString *bread = self.breadTypes[breadRow];NSString *message = [[NSString alloc] initWithFormat:@"Your %@ on %@ bread will be right up.", filling, bread];UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Thank you for your order"message:messagedelegate:nilcancelButtonTitle:@"Great!"otherButtonTitles:nil];[alert show];
}- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view from its nib.self.fillingTypes = @[@"Ham", @"Turkey", @"Peanut Butter",@"Tuna Salad", @"Chicken Salad", @"Roast Beef", @"Vegemite"];self.breadTypes = @[@"White", @"Whole Wheat", @"Rye",@"Sourdough", @"Seven Grain"];
}#pragma mark -
#pragma mark Picker Data Source Methods
// 表示这个picker有两列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{return 2;
}// 分别指定每一列所拥有的行数
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{if (component == kBreadComponent) {return [self.breadTypes count];} else {return [self.fillingTypes count];}
}#pragma mark Picker Delegate Methods
// 为不同的列指定对应的内容
- (NSString *)pickerView:(UIPickerView *)pickerViewtitleForRow:(NSInteger)rowforComponent:(NSInteger)component
{if (component == kBreadComponent) {return self.breadTypes[row];} else {return self.fillingTypes[row];}
}@end

===============================================================

BIDDependentComponentPickerViewController.h 第四个tab所对应的视图控制器:

#import <UIKit/UIKit.h>#define kStateComponent 0
#define kZipComponent   1@interface BIDDependentComponentPickerViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>@property (strong, nonatomic) IBOutlet UIPickerView *dependentPicker;
@property (strong, nonatomic) NSDictionary *stateZips;
@property (strong, nonatomic) NSArray *states;
@property (strong, nonatomic) NSArray *zips;- (IBAction) buttonPressed;@end

 

BIDDependentComponentPickerViewController.m

#import "BIDDependentComponentPickerViewController.h"@implementation BIDDependentComponentPickerViewController- (IBAction)buttonPressed
{NSInteger stateRow = [self.dependentPickerselectedRowInComponent:kStateComponent];NSInteger zipRow = [self.dependentPickerselectedRowInComponent:kZipComponent];NSString *state = self.states[stateRow];NSString *zip = self.zips[zipRow];NSString *title = [[NSString alloc] initWithFormat:@"You selected zip code %@.", zip];NSString *message = [[NSString alloc] initWithFormat:@"%@ is in %@", zip, state];UIAlertView *alert = [[UIAlertView alloc] initWithTitle:titlemessage:messagedelegate:nilcancelButtonTitle:@"OK"otherButtonTitles:nil];[alert show];
}- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view from its nib.NSBundle *bundle = [NSBundle mainBundle];    // 获取NSBundleNSURL *plistURL = [bundle URLForResource:@"statedictionary"withExtension:@"plist"];    // 获取对应名字和后缀名的URL
    self.stateZips = [NSDictionarydictionaryWithContentsOfURL:plistURL];    // 根据URL获取对应的NSDictionary
    NSArray *allStates = [self.stateZips allKeys];    // 得到NSDictionary的所有keyNSArray *sortedStates = [allStates sortedArrayUsingSelector:@selector(compare:)];    // 为Array排序self.states = sortedStates;    // 赋值
    NSString *selectedState = self.states[0];    // 获取Array的第一个字符self.zips = self.stateZips[selectedState];    // 因为是Dictionary, 所以根据Array的第一个字符获取对应的Array
}#pragma mark -
#pragma mark Picker Data Source Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{return 2;
}- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {if (component == kStateComponent) {return [self.states count];} else {return [self.zips count];}
}#pragma mark Picker Delegate Methods
- (NSString *)pickerView:(UIPickerView *)pickerViewtitleForRow:(NSInteger)rowforComponent:(NSInteger)component
{if (component == kStateComponent) {return self.states[row];} else {return self.zips[row];}
}// UIPickerViewDelegate的方法, 方法是点击后触发
- (void)pickerView:(UIPickerView *)pickerViewdidSelectRow:(NSInteger)rowinComponent:(NSInteger)component
{// kStateComponent列if (component == kStateComponent) {NSString *selectedState = self.states[row];    // 根据行数对应Array的元素self.zips = self.stateZips[selectedState];    // Dictionary根据选中的元素也就是key获取对应的Array[self.dependentPicker reloadComponent:kZipComponent];    // picker重新加载指定列[self.dependentPicker selectRow:0inComponent:kZipComponentanimated:YES];    // 选中指定列的某一行
    }
}// 为不同的列设置不同的宽度
- (CGFloat)pickerView:(UIPickerView *)pickerViewwidthForComponent:(NSInteger)component
{if (component == kZipComponent) {return 90;} else {return 200;}
}@end

==================================================================

BIDCustomPickerViewController.h   第五个tab所对应的视图控制器:

#import <UIKit/UIKit.h>@interface BIDCustomPickerViewController : UIViewController
<UIPickerViewDataSource, UIPickerViewDelegate>@property (strong, nonatomic) IBOutlet UIPickerView *picker;
@property (strong, nonatomic) IBOutlet UILabel *winLabel;
@property (strong, nonatomic) NSArray *images;
@property (strong, nonatomic) IBOutlet UIButton *button;- (IBAction)spin;@end

 

BIDCustomPickerViewController.m

#import "BIDCustomPickerViewController.h"
#import <AudioToolbox/AudioToolbox.h>@implementation BIDCustomPickerViewController {SystemSoundID winSoundID;SystemSoundID crunchSoundID;
}-(void)showButton
{self.button.hidden = NO;
}-(void)playWinSound
{if (winSoundID == 0) {NSURL *soundURL = [[NSBundle mainBundle] URLForResource:@"win" withExtension:@"wav"];    // 获取指定音频文件得URLAudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &winSoundID);    // 创建系统声音对象
    }AudioServicesPlaySystemSound(winSoundID);    // 播放系统声音self.winLabel.text = @"WINNING!";[self performSelector:@selector(showButton)    withObject:nilafterDelay:1.5];    // 执行方法
}- (IBAction)spin
{BOOL win = NO;int numInRow = 1;int lastVal = -1;for (int i = 0; i < 5; i++) {int newValue = random() % [self.images count];if (newValue == lastVal) {numInRow++;} else {numInRow = 1;}lastVal = newValue;[self.picker selectRow:newValue inComponent:i animated:YES];[self.picker reloadComponent:i];if (numInRow >= 3) {win = YES;}}if (crunchSoundID == 0) {NSString *path = [[NSBundle mainBundle] pathForResource:@"crunch"ofType:@"wav"];NSURL *soundURL = [NSURL fileURLWithPath:path];AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL,&crunchSoundID);}AudioServicesPlaySystemSound(crunchSoundID);if (win) {[self performSelector:@selector(playWinSound)withObject:nilafterDelay:.5];} else {[self performSelector:@selector(showButton)withObject:nilafterDelay:.5];}self.button.hidden = YES;self.winLabel.text = @"";if (win) {self.winLabel.text = @"WIN!";} else {self.winLabel.text = @"";}
}- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view from its nib.self.images = @[[UIImage imageNamed:@"seven"],[UIImage imageNamed:@"bar"], [UIImage imageNamed:@"crown"],[UIImage imageNamed:@"cherry"], [UIImage imageNamed:@"lemon"],[UIImage imageNamed:@"apple"]];srandom(time(NULL));    // random()每次生成的随机数就是非固定的了
}#pragma mark -
#pragma mark Picker Data Source Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{return 5;
}- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{return [self.images count];
}#pragma mark Picker Delegate Methods
// 自定义的UIPickerView内容,给每列每行设置一个UIView
- (UIView *)pickerView:(UIPickerView *)pickerViewviewForRow:(NSInteger)rowforComponent:(NSInteger)component reusingView:(UIView *)view
{UIImage *image = self.images[row];UIImageView *imageView = [[UIImageView alloc] initWithImage:image];return imageView;
}@end

 

http://www.lbrq.cn/news/2465299.html

相关文章:

  • 公司网站 备案网站查询平台官网
  • 南京一站式工程装饰装修网站友情链接对网站的作用
  • 无锡网站建设企业排名百度广告投放价格表
  • 网站建设与管理维护的答案李建青网络推广方法技巧
  • 官方网站建设报价表关键词如何快速排名
  • 包头网站建设易通微信广告投放推广平台
  • 手机怎么做网站建立网站需要什么
  • 南京企业网站设计培训网站
  • 东道设计考研广州seo优化公司
  • 做正规网站有哪些官网关键词优化价格
  • 如何做二维码跳转到网站站长seo软件
  • b站视频推广网站2023厦门百度seo
  • 林业网站建设有哪些网站建设流程
  • 免费asp网站程序下载百度外推排名代做
  • 做网站还是网页设计软文怎么写比较吸引人
  • wordpress7.6百度seo排名原理
  • 中国和城乡建设部网站兰州网络seo公司
  • 官方网站建设要点独立站怎么搭建
  • 免费同城信息发布平台东莞seo网络优化
  • 网站建设相关技术方案外链网站推荐
  • 网站产品展示怎么做北京刚刚传来特大消息
  • 学校网站管理与建设网络推广的手段
  • 南京免费发布信息网站谷歌网站收录提交入口
  • 查网站域名备案东莞seo网站排名优化
  • 网站模板 可做采集站手机百度app最新版下载
  • 沈阳网站建设技术公司排名百度云搜索引擎入口手机版
  • 网站建设主要步骤软文写作模板
  • 网站备案好还是不备案好百度认证证书
  • 网站免费优化查排名
  • 济南建设网站电商网站开发
  • MySQL操作进阶
  • which soffice soffice not found
  • NLP验证自动化脚本优化
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(三)
  • 期待更好的发展
  • (Arxiv-2025)OVIS-U1技术报告