我们经常会用的view之间跳转的时候进行传值的操作。。。
利用AppDelegate进行传值:
AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>{
NSString *name; //我们将内容保存在这里。。。
}
接着
AppDelegate.m
@synthesize name;
下面是viewcontroller之间的值传递。。。
存值:
//将值放到AppDelegate中
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.name = @"http://751401909.iteye.com";
取值:
//用到的地方取出来
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSLog(@"name:%@",appDelegate.name);
这是一种方法。。。当然也有其他方法。。
使用NSUserDefaults:
如果仅是传值,有点大材小用了。。。他可以传递对象数据。。
得到NSUserDefaults:
//得到对象
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults] ;
存储:
//setObject 是存储的内容 forKey 是标记 取得时候用
[userDefaults setObject:[text1 text] forKey:k1] ;
取值:
//根据key找到存储的数据 跟android的sharedpreferences类似
text1.text = [userDefaults objectForKey:k1] ;
也比较简单。。。
数据库传递:
这里涉及数据库的操作。。需要libsqlite3.0.dylib 并包含sqlite3.h。。。
为了方便;
#define DATABASE_NAME @"test.wp" //数据库名字
#define TABLE_NAME @"table_tf" //表名
#define ROW_NUMBER @"content" //字段
#define ROW_TIME @"time" //字段
主要代码片段:
创建数据库和表:
@property sqlite3 *database ;
@property NSString *dbPath ;
.....
.....
-(void) initDataBase{
//找到应用程序的路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) ;
NSString *documentPath = [paths objectAtIndex:0] ;
dbPath = [documentPath stringByAppendingPathComponent:DATABASE_NAME] ;
int result = sqlite3_open([dbPath UTF8String], &database) ;
if(result == SQLITE_OK){
NSString *sqlCreateTable = [[NSString alloc] initWithFormat:@"CREATE TABLE IF NOT EXISTS %@ (%@ TEXT ,%@ TEXT)",TABLE_NAME,ROW_NUMBER,ROW_TIME];
[self sqlExc:sqlCreateTable] ;
NSLog(@"数据库创建成功") ;
}
sqlite3_close(database) ;
}
保存数据:
sqlite3_open([dbPath UTF8String], &database) ; //打开数据库
//清空一下表 可以不写
NSString *str = [[NSString alloc] initWithFormat:@"DELETE FROM %@",TABLE_NAME] ;
[self sqlExc:str]; //自己定义的方法。。 下面有
.....
.....
NSString *sql = [[NSString alloc] initWithFormat:@"INSERT INTO %@ (%@,%@) VALUES('%@','%@')",TABLE_NAME,ROW_NUMBER,ROW_TIME,tempStr,time] ;
[self sqlExc:sql] ; //插入数据
sqlite3_close(database) ; //关闭数据库
-(void)sqlExc:(NSString *)sql{
char *err;
int result = sqlite3_exec(database, [sql UTF8String], NULL, NULL, &err) ;
if (result != SQLITE_OK) {
NSLog(@"数据库操作数据失败! errCode:%d msg:%s",result,err);
}
}
也是刚开始学习 ,,,不知道还有没有其他的好的方法。。。 如果有好的方法,,务必留言哦 共同学习。。。
贴一详细使用方法。。。GO
分享到:
相关推荐
本篇将深入讲解如何在Storyboard中进行视图控制器之间的跳转以及数据传递。 1. ** segue的概念与类型 ** Segue是Storyboard中连接两个视图控制器的桥梁,用于定义从一个视图控制器到另一个的过渡动画。Segue有...
以上就是关于iPhone应用开发中解决键盘遮挡问题和视图间数据传递的一个小例子。通过这个例子,我们可以更好地理解和应用这些常见问题的解决方案,提升我们的iOS开发技能。在实际项目中,可能需要根据具体需求进行...
在iOS开发中,当涉及到两个不同的应用程序之间进行数据交换或用户流程跳转时,我们通常会用到App间通信(Inter-App Communication)的技术。这个过程涵盖了多种方法,包括URL Scheme、Universal Links、Pasteboard、...
"StoreBoard push 传值" 则是指StoreBoard提供的页面推送功能,并且支持在页面之间传递数据。在iOS开发中,通常使用UIStoryboardSegue或者导航控制器(UINavigationController)的pushViewController方法来进行页面...
#### 二、页面跳转与传值 **1. 页面跳转** - **创建新ViewController**: 在项目中新增一个ViewController文件,如`CarNoViewController`。 - **导入并实例化**: 在原ViewController中导入新ViewController的头文件...