当前位置:  编程技术>移动开发
本页文章导读:
    ▪基础匡扶教程:XCode 4.2的Storyboard        基础辅助教程:XCode 4.2的Storyboard 基础辅助教程:XCode 4.2的Storyboard今天我准备做一个短暂的辅助教程关于怎么用Xcode 4.2里边的Storyboard.当storyboard出现的时候相比于以前IB的工作方式有些让人茫.........
    ▪ 施用phantom-limb 模拟Touch 事件        使用phantom-limb 模拟Touch 事件 1下载 phantom-limb.js2.使用2.1 index.html <!DOCTYPE html> <html> <head> <title>Hello World</title> <link rel="stylesheet" href="/touch/resources/css/sencha-touch.........._/font__/div__div_    ▪ 3大框架复习      _font style=/index.html"font-size:10pt;font-weight:normal;color:black;"> 三大框架复习 Struts1.写web.xml配置文件,当服务器启动时,会先读取web.xml配置文件,此时加载ActionServlet类,这个类是Struts的入口。以.do结尾的URL都会被映射到ActionServlet中,它根据struts-confi.........

[1]基础匡扶教程:XCode 4.2的Storyboard
    来源: 互联网  发布时间: 2014-02-18
基础辅助教程:XCode 4.2的Storyboard
基础辅助教程:XCode 4.2的Storyboard

今天我准备做一个短暂的辅助教程关于怎么用Xcode 4.2里边的Storyboard.当storyboard出现的时候相比于以前IB的工作方式有些让人茫然不解, 我也感觉苹果在这个技术上真的打了一个曲线球.

实际上当你开始使用它的时候并不是完全那么糟糕,这个教程将会展现用一个按钮怎么连接两个视图控制器, 在这个过程中不会有一行代码.

废话就说这么多,现在让我们进入正题,马上建立一个新的Xcode工程.


1.建立Demo工程
我们将用Single View Application模板,我们给它取名为Demo.为了简单起见我们这个教程只针对于iPhone. 记住勾选"use Storyboard"和"Use Automatic Reference Counting"这两个选项(虽然在这次教程里我并不会讲解ARC, 注:ARC也就是IOS5内存管理的自动引用计数技术). 我不准备给我的类加任何前缀所以我把那一个位置留空.

现在你应该拥有了你的新的空工程,包含你的App Delegate, 一个single View Controller, 和一个storyboard文件.

在我们开始storyboard 的学习之前,让我们先建立一个新的view controller. 右击Demo组(就在App Delegage的上面),然后选择"New File", 在Cocoa Touch组里选择UIViewController subclass 然后我们给它取名为"NewViewController"
确保下边的两个选项都没有被标记.

现在你就有一个工程像下边这幅图的样子.

2.Storyboard

现在我们进入正题, storyboard将允许我们定义在我们应用程序中不同的视图之间的相互作用关系.在一个程序中你可以拥有一个或多个storyboard, 这并不是说你真正的需要它().让我们点击storyboard文件然后看看都有些什么.

首先我们看到我们的工程有了我们第一个view controller 而且也包含我们程序的入口点.
现在我们首先要做的就是添加一个navigation controller以便我们能够推入或弹出新的视图. 幸运的是Xcode我们提供了一个简单的做此事情的方法.
左键单击 View Controller的图片,然后在屏幕的顶部选择Editor menu,然后选择Embed In最后选择Navigation Controller. Xcode非常友好的我们加入了一个新的navigation controller 而且把所有的为了使它能够工作的后台工作都做好了.
谢谢Xcode,但是我想如果这个选项能够更明显一点它会更实用的.现在你拥有了两个box 在你的storyboard 上,如下图所示

非常棒!现在我们需要一个button来展示从一个视图转到另一个.所以现在让我们添加一个button到View Controller.  只需要托一个"rounded rect button"从对象列表里到view controller上(注意如果你的视图进行了缩放的话你是无法托项目到view上的);

让我们给这个button命名为"New View". 让我们也给navigation bar一个标题"Original View" ,我们可以双击导航条并输入.

现在我们需要一个新的View Controller  对象来展现我们的 "NewViewController", 在右侧托一个已经存在的viewController进来. 添加一个label写上比如"My New View"或什么其它的. 这样当我们测试把这个视图推入的时候我们就能知道了.现在你的soryboard应该看起来像下面这样

现在我们需要链接我们的view Controller 对象到我们的 "NewViewController"  子类.
选择你刚才托入的view controller然后选择Identity Inspector在右上方,选择第三个标签,从Class里选择"NewViewController". 最终, 我们需要告诉第一个视图的按钮,当它被点击的时候我们想要移入第二一个视图.简单的按住Ctrl然后从button托动到新的view controller.当我们做完这些时将会出现一个选项列表,有三个选项(push, modal 和custom).选择Push. 这是可行的因为我们有一个Navigation Controller在我们的工程里.如果我们没有在开始把navigation controller加进来,这样做是没有意义的,在运行的时候点击button将不会任何事情发生.不管怎么样,你还可以选择"modal"选项它并不需要navigation controller.

也注意当我们连接了两个视图以后, navigation bar将会出现在第二个视图.

你的最终的storyboard应该看起来像下边这个样子

现在如果你运行你的工程, 你将看到第一个视图, 点击按钮出现第二个视图.

可能唯一需要提到的就是如果我们需要给新的视图传送数据我们可以实现方法"prepareForSegue:sender:".  当然你也可以从视图返回数据用delegates就像我们平时做的那样.

    
[2] 施用phantom-limb 模拟Touch 事件
    来源: 互联网  发布时间: 2014-02-18
使用phantom-limb 模拟Touch 事件
1
下载 phantom-limb.js

2.
使用

2.1
index.html

<!DOCTYPE html>
<html>
<head>
    <title>Hello World</title>
    <link rel="stylesheet" href="/touch/resources/css/sencha-touch.css" type="text/css">
    <script type="text/javascript" src="/touch/sencha-touch-all-debug.js"></script>
    <script type="text/javascript" src="/blog_article/app.js"></script>
</head>
<body></body>
<script src="/phantom-limb/phantom-limb.js" type="text/javascript"></script>
</html>


注意phantom-limb位置.

2.2
app.js

/**
 * @example miniphone
 */
Ext.application({
    name: 'App',

    launch: function() {
        Ext.create('Ext.Panel', {
            fullscreen: true,
            html: '<div id="canvasCt"><canvas id="canvas" width="600" height="600"  /></div>'
        });
        
        var canvas = Ext.get('canvas');
        var context = canvas.dom.getContext('2d');
        
        context.lineWidth = 4;
        
        var drawer = {
            isDrawing : false,
            touchstart : function(e) {
                e.preventDefault();
                var coors = {
                    x : e.targetTouches[0].pageX,
                    y : e.targetTouches[0].pageY
                };
                context.beginPath();
                context.moveTo(coors.x, coors.y);
                this.isDrawing = true;
            }
            ,
            touchmove : function(e) {
                var coors = {
                    x : e.targetTouches[0].pageX,
                    y : e.targetTouches[0].pageY
                };
                if (this.isDrawing) {
                    context.lineTo(coors.x, coors.y);
                    context.stroke();
                }
            }
            ,
            touchend : function(e) {
                if (this.isDrawing) {
                    this.isDrawing = false;
                }
            }
        }
        
        // 在这里可以直接监听touch事件了.
        canvas.dom.addEventListener('touchstart', drawer.touchstart, false);
        canvas.dom.addEventListener('touchmove', drawer.touchmove, false);
        canvas.dom.addEventListener('touchend', drawer.touchend, false);
    }
});


3
测试

3.1
测试结果在Canvas上可以正常写字,表示通过.
在Chrome测试通过.




    
[3] 3大框架复习
    来源: 互联网  发布时间: 2014-02-18
三大框架复习
Struts
1.写web.xml配置文件,当服务器启动时,会先读取web.xml配置文件,此时加载ActionServlet类,这个类是Struts的入口。以.do结尾的URL都会被映射到ActionServlet中,它根据struts-config.xml中的配置,将请求分配到指定的action上。运行代码在不同的action实现。
<servlet>
<servlet-name>actionservlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>//用到struts时就必须写加载struts-config.xml配置文件
</servlet>
<servlet-mapping>
<servlet-name> actionservlet </servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2.写用到的JavaBean类
3.写一个formbean的类 让它继承actionform类
4.写个stuts-config.xml文件  写在web-info下面
5.让写的action类继承Action或dispatchedAction
<struts-config>
<form-beans>
<form-bean name="fileform" type="com.fit.struts.formfile.Form" />
</form-beans>
<global-forwards>
<forward name="tolist" path="/WEB-INF/jsp/EmpList.jsp" />
</global-forwards>
<action-mappings>
<action path="/fileformaction" type="com.fit.struts.action.FileFormAction"
scope="request" name="fileform" parameter="m">
<forward name="success" path="/WEB-INF/page/Seccess.jsp" />
</action>
</action-mappings>
  </form-beans>
</struts-config>
当struts-config.xml文件被加载后:
   1.actionservlet将按配置文件,将提交的表单信息添加到form-bean中,form-bean中的属性必须和表单中的一致,可以是一个实体类。
   2.actionservlet按照配置文件,将请求分配到指定的action上。 parameter是用在action类继承dispatchaction里

Hibernate
1.在javabean类中写一个将javabean和表连接的配置文件 employee.hbm.xml
<hibernate-mapping  package="com.fit.entity">
<class name="Employee" table="employee">
<id name="email">//主键
<generator ></generator>
</id>
<property name="ename" />
<property name="idcard" />
<property name="gender" />
<property name="birthday" />
<property name="address" />
<property name="mobile" />
<property name="hometel" column="home_tel" type=”String”/>
<property name="fax" />
<property name="intro" />
<property name="esource" />
<property name="photo" />
</class>
</hibernate-mapping>
2.在src根目录下建个hibernate.cfg.xml文件
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">
jdbc:oracle:thin:@127.0.0.1:1521:FITDEMO
</property>
<property name="connection.username">zxl</property>
<property name="connection.password">1988311</property>
<property name="dialect">org.hibernate.dialect.Oracle9iDialect</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
<mapping resource="com/fit/entity/Employee.hbm.xml" />
</session-factory>
</hibernate-configuration>
在给文件中 配置数据库连接信息 配置方言
<mapping resource="com/fit/entity/Employee.hbm.xml" /> 该配置是映射Employee.hbm.xml
3.建个HibernateUtil的工具类 通过sessionfactory的到session类
public class HibernateUtil {
private static final SessionFactory factory;
static {
factory = new Configuration().configure().buildSessionFactory();
}
public static Session getCurrentSession() {
return factory.getCurrentSession();
}
}
4.在过滤器中创建事物并提交
5.修改dao层中的类 session.
Spring+Hibernate
1.写application.xml的配置文件  写在src的根目录下  将连接数据库 得到sessionfactory类
<beans>
<bean id="data"
>
//得到DriverManagerDataSource类
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:FITDEMO" />
<property name="username" value="cui" />
<property name="password" value="cui" />
</bean>
<bean id="factory"
>
<property name="dataSource" ref="data" />//得到sessionfactory类
<property name="mappingResources">
<list>
<value>com/_11fit/struts/bean/Employee.hbm.xml</value>
//连接Employee.hbm.xml
</list>
</property>
</bean>
<bean id="employeeDao" >
<property name="sessionFactory" ref="factory" />//得到一个dao类
</bean>
</beans>
2.dao层中连接数据库的类要继承HibernateDaoSupport接口
3.修改dao类   用getHibernateTemplate()模板
  getHibernateTemplate().delete(e) 删除
  getHibernateTemplate().loadAll(Employee.class) 得到全部信息
  getHibernateTemplate().get(Employee.class, email) 得到一条信息
  getHibernateTemplate().save(emp) 提交 保存信息
  getHibernateTemplate().update(emp) 修改
4.修改action类 通过ApplicationContext来得到bean
private ApplicationContext context = new ClassPathXmlApplicationContext(
"application.xml");//找到application.xml文件
private EmployeeDao edao = (EmployeeDao) context.getBean("employeeDao");
//employeeDao与配置文件中的 红字相同 得到一个employeeDao类的实例
Spring+Struts(方法一 代理bean)
1. 修改struts-config.xml 加一个托管的插件(加),加载文件时,先找代理的action bean
通过代理bean 找到真正的action
   <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />//关联applicationContext.xml
</plug-in>
2. 修改applicationContext.xml的配置文件(加)
   <bean name="/emp"  >
<property name="edao" ref="employeeDao" />
</bean>//将真正的action放到IoC容器中
3. 将action中的type改了
   <action path="/emp" type="org.springframework.web.struts.DelegatingActionProxy"
name="newform" scope="request" parameter="m">
<forward name="false" path="/WEB-INF/jsp/False.jsp" />
<forward name="updataemp" path="/WEB-INF/jsp/Updata.jsp" />
</action>
4. 修改action类 通过依赖注入的参数注入方法
  private EmployeeDAO edao;//定义的edao要和applicationContext.xml中的bean 配置相同
                           (红字)
public void setEdao(EmployeeDAO dao) {
edao = dao;
}
Spring+Struts(方法一继承ActionSupport)
1. 注册ServletContext监听器 在web.xml中添加 得到ContextLoaderListener类
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2. action类继承ActionSupport类(获DispatchActionSupport类)
3. 在Action内部获得ApplicationContext,查找所依赖的Bean
ApplicationContext context = getWebApplicationContext();
EmployeeDAO edao = (EmployeeDAO) context.getBean("employeeDao");

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3