本文主要是介绍iPhone Development Via Xcode5 vol.02,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在这一章,我们的目标是做一个简单的应用,以此了解一些iOS开发的基本概念。
我们就做一个考试作弊应用,应用有一个选择器,选择器分两列,左侧是题目序号,右侧是题目答案,应用还有一个按钮,点一下就可以发送答案。从分析来看,我们的应用需要3个控件,一个标签,一个选择器以及一个按钮。在iOS开发中,选择器可以使用Picker View控件,这是一种固定大小的控件,使用滚轮显示。我们首先创建工程,点开Main_iPhone.storyboard界面,将控件一一拉上去进行布局。
Picker View控件使用UIPickerView类,要使其正常工作,需要有一个代理及一个数据源。这是一种MVC思想,控件只负责界面的展示,具体展示的数据取决于数据源,而数据及消息的处理取决于代理中的实现。要实现UIPIckerView的数据源和代理,只要实现UIPickerViewDataSource及UIPickerViewDelegate协议即可。协议使Object-C的一个概念,相当于Java语言中的接口。
首先在ViewController.h中添加声明:
@interface ViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDataSource>
{NSArray *questions;NSArray *answers;IBOutlet UIPickerView *selector;
}@property UIPickerView *selector;@end
接着在ViewController.m中对相应函数进行实现:
#import "ViewController.h"@implementation ViewController@synthesize selector;- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{// 因为我们只有2列,所以直接返回2return 2;
}- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{if (component == 0) { //每一列序号从0开始顺序排列,第一列为题目序号return [questions count];} else if (component == 1) {return [answers count];}return -1;
}// 这是协议的一个可选实现函数,返回pickerView特定单元格的标题名
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{switch (component) {case 0:return [questions objectAtIndex:row];break;case 1:return [answers objectAtIndex:row];default:break;}return @"";
}- (void)viewDidLoad
{[super viewDidLoad];questions = [[NSArray alloc] initWithObjects: @"第一题", @"第二题", @"第三题", @"第四题", @"第五题", nil];answers = [[NSArray alloc] initWithObjects: @"A", @"B", @"C", @"D", nil];
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end
Picker的每一行称之为row,每一列称之为component。Xcode5很方便的一点是,对于必须要实现的协议函数,如果在.m文件中没有实现,Xcode5会给出警告信息,这样我们就可以方便的对所有必须的函数进行实现了。
代码中也初始化了数据。viewDidLoad函数会在视图被加载完成时执行,通常进行一些初始化工作。值得注意的是,不要忘记@synthesize语句,不然Picker控件虽然看起来工作正常(能旋转),但值不会被赋予进去,因为程序找不到相应的set函数。
现在开始进行连接,像上一章一样,打开视图层次列表,右键选择picker(Ctrl+点击或双指点击触摸板),选择dataSource及delegate分别拖动到View Controller上建立连接。
再选择New Referencing Outlet,拖动至View Controller上与selector建立连接。最后完成按钮功能部分。在头文件中声明函数并在.m文件中实现点击按钮发送答案代码,为了简单起见,这里我们只是让它打印了相应的日志信息。将按钮与相应代码建立连接。现在我们可以执行一下看下我们的成果了~(吐槽一下,iOS7扁平化设计的picker真心丑)
这篇关于iPhone Development Via Xcode5 vol.02的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!