河北地质大学本科生毕业设计
图4.2.1-2 语言选择界面
界面都是在xib中拖拽一个UIImageView作为背景,在相应的位置上布局UIButton,绑定点击事件,在事件中实现相应的界面跳转。登陆界面代码详见附录D,语言选择界面代码详见附录E。
4.2.2 历史菜单模块
运行效果图如下4.2.2-1所示。
图4.2.2-1 历史菜单界面
13
河北地质大学本科生毕业设计
此界面为历史菜单界面,所有历史点单的基本信息都在本页面进行展示,本页面是由
UITableView和自定义cell来进行信息展示的,展示用的数据是从数据库中读取出来,封装成模型。每一条数据的具体内容体现在每个cell上,信息的布局由xib完成,将自定义cell上的控件设置成属性,在UITableView的协议方法中通过点语法对这些属性进行赋值,值的数据就从我们的数据模型里边取出来,赋值实现之后就如同界面上展示的效果一般。 自定义cell如图4.2.2-2所示。
图4.2.2-2 自定义cell的布局
具体的代码实现详见附录F。
4.2.3 历史菜单详情模块
运行效果图如下4.2.3-1所示。
图4.2.3-1 历史菜单详情界面
历史菜单详情界面总体布局是一个UITableView覆盖主要部分,单元格同样是使用自定义cell,在xib下拖拽控件,包括UILabel和UITextField,数据从数据库中获取并封装成Model类,点语法调用自定义cell的控件,把Model类的对象属性一一赋值,将数据的各项信息展示到表格中。正下方用一个Label显示单价乘数量的总和,即参考价格。自定义cell如图4.2.3-2所示。
图4.2.3-2 自定义cell的布局
14
河北地质大学本科生毕业设计
具体代码实现如下详见附录G。
4.2.4 菜品介绍模块
运行效果如下图4.2.4-1,图4.2.4-2所示。
图4.2.4-1主厨推荐界面
图4.2.4-2 其他选项界面
菜品介绍是本项目的重中之重,因其复杂度,而且为了降低类的耦合和每个类中的代码量,将该模块大致分为三个部分,包括选项卡,主菜单,主厨推荐。
15
河北地质大学本科生毕业设计
1. 选项卡部分
最右侧的选项卡部分是在视图控制器xib上拖拽了一个UITableView,给每个cell的imageView属性赋值不同的图片,并且设置一个全局变量记录当前选择的是哪一个cell,被选中的cell赋值高亮状态的图片。并且将这个值传递给主菜单部分。 具体代码实现详见附录H。
2. 主菜单部分
当用户选择右侧的某一选项卡时,页面的其他部分的展示数据是根据不同选项卡对应的值,从数据库中取出的不同数据。
主菜单部分的布局主要是由列表控制器UITableView和滑动视图UIScrollerView一一对应组成,即菜品的名称和图片对应,当用户点击UITableView上的菜品名称时UIScrollerView会滑动到对应的图片,同理若用户滑动UIScrollerView浏览菜品图片时UITableView会跳转到对应菜品名称的单元格。 具体代码实现详见附录I。
主菜单部分还包括三个按钮,分别是点菜、详细和我的菜单。由上述代码也可以看到,其中点菜按钮的点击事件中会将当前选中的菜品数据存储到数据库的一个分类下,即用户选中的当前菜品。其中详细按钮的点击事件中则是模态弹出一个小窗口,传值到视图控制器中,用于向用户展示当前菜品的具体信息,其中我的菜单按钮的点击事件则是跳转到我的菜单界面。
菜品详细信息界面代码如下所示:
- (void)viewDidLoad {
[superviewDidLoad];
self.pictureImg.image = [UIImageimageNamed:self.menu.menu_picName]; self.dishNameLab.text = self.menu.menu_name; self.dishNameLab.textColor = [UIColoryellowColor]; }
#pragma mark - 点击按钮关闭模态弹出的该界面 - (IBAction)returnBtnClick:(id)sender {
[selfdismissViewControllerAnimated:YEScompletion:nil]; }
3. 主厨推荐部分
这一部分充分利用了Objective-C语言的继承特性,子类继承了父类,同样就拥有了父类所有的方法和属性(成员变量)。考虑到主厨推荐界面与其他几个界面控件功能完全相同,只是控件的位置有所不同,因此主厨推荐的视图控制器继承与主菜单的视图控制器,这样就没必要别写重复的代码,可重用性很高。即ChefViewController : MenuViewController
4.2.5 我的菜单模块
运行效果如下图4.2.5-1所示。
16
河北地质大学本科生毕业设计
图4.2.5-1 我的菜单界面
我的菜单界面即用户已经点单的展示部分,UITableView覆盖主体部分,自定义cell因为格式和历史菜单详情中用到的cell类似,因此可以导入该cell的头文件,使用即可,这里也体现了Objective-C封装特性的优势,不同的是这里的份数和备注文本框是允许用户定义的。数据是在主菜单界面用户点菜后存储到数据库中的,此时从数据库中取出,赋值给相应的cell控件。
代码具体实现详见附录J。
4.2.6 送单模块
运行效果如下图4.2.6-1所示。
图4.2.6-1 送单界面
送单模块重点放在了餐位选择和送单上,其中餐位选择是必须的,如果没有选择就餐
17