代码加载storyboard中的控制器

我们大多用纯代码来写我们的项目,便于后期的更新和维护,但是有时候我们会遇到有些界面基本不会改变的情况,加之开发进度比较紧,我们就可以在storyboard创建控制器,加载storyboard并push里面的viewcontroller,具体实现如下

1.我们需要创建一个storyboard,名字为baseController。

阅读全文

TabBarController之间的传值

1.下图(JGHomeController)为第一个控制器,他的tabbarController的index为0,将要传值给JGJobListController为第二个控制器,传递的值为abc数组。

阅读全文

导出tableView数据至excel

0.开始的时候因为没有找到导出excel格式的文章,倒是找到了导出csv格式的文件的方法,但是由于中文乱码中文问题,问题一直没有找到好的解决方法。这里也稍微介绍一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
- (void)exportCSV:(NSString *)fileName {  


NSOutputStream *output = [[NSOutputStream alloc] initToFileAtPath:fileName append:YES];
[output open];


if (![output hasSpaceAvailable]) {
NSLog(@"没有足够可用空间");
} else {

NSString *header = @"学号,姓名\n"; //这里是文件第一行的头(逗号是换列,\n是换行)

const uint8_t *headerString = (const uint8_t *)[header cStringUsingEncoding:NSUTF8StringEncoding];
NSInteger headerLength = [header lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
NSInteger result = [output write:headerString maxLength:headerLength];
if (result <= 0) {
NSLog(@"写入错误");
}


NSArray *students = [self queryStudents];
for (Student *stu in students) {

NSString *row = [NSString stringWithFormat:@"%@,%@\n", stu.num, stu.name]; //循环插入数据<span style="font-family: Arial, Helvetica, sans-serif;">(逗号是换列,\n是换行)</span>

const uint8_t *rowString = (const uint8_t *)[row cStringUsingEncoding:NSUTF8StringEncoding];
NSInteger rowLength = [row lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
result = [output write:rowString maxLength:rowLength];
if (result <= 0) {
NSLog(@"无法写入内容");
}

}

[output close];
}
}

阅读全文

Markdown语法简介

Markdown 是一种用来写作的轻量级「标记语言」,它用简洁的语法代替排版,而不像一般我们用的字处理软件 WordPages 有大量的排版、字体设置。它使我们专心于码字,用「标记」语法,来代替常见的排版格式。其不追求大而全,简洁至上,正所谓不求最贵,只求最好!

阅读全文

ios倒计时

就是一个简单的倒计时,重要的是注意倒计时按钮的类型一定要设置成custom,不然按钮上面的文字会闪!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
__block int timeout= 60; //倒计时时间  

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
dispatch_source_set_event_handler(_timer, ^{
if(timeout<=0){ //倒计时结束,关闭
dispatch_source_cancel(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
//设置界面的按钮显示 根据自己需求设置
[self.codeBtn setTitle:@"获取验证码" forState:UIControlStateNormal];
[self.codeBtn setTitleColor:RGBColor(53, 154, 243, 1) forState:UIControlStateNormal];
self.codeBtn.userInteractionEnabled = YES;

});
}else{
int seconds = timeout % 60;
if (seconds ==00) {
seconds = 60;
}
NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
dispatch_async(dispatch_get_main_queue(), ^{
//设置界面的按钮显示 根据自己需求设置
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];

[self.codeBtn setTitle:[NSString stringWithFormat:@"%@s后重新获取",strTime] forState:UIControlStateNormal];
[self.codeBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[UIView commitAnimations];
self.codeBtn.userInteractionEnabled = NO;

});

timeout--;
}
});
dispatch_resume(_timer);

阅读全文