足球盘口软件
当前位置: 足球盘口软件 > 前端 >
block学习心得,在ios7开发中遇到的一些deprecated的问题

cell.textLabel.textAlignment = UITextAlignmentCenter;

一、

#import "AppDelegate.h"

#import "Denglu.h"

#import "ViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

BOOL show=[[NSUserDefaults standardUserDefaults] objectForKey:@"showw"];

if(show==NO)

{

[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"showw"];

Denglu *v1=[Denglu new];

self.window.rootViewController=v1;

}

else

{

ViewController *v2=[ViewController new];

self.window.rootViewController=v2;

}

return YES;

}

block的学习的心得,block学习心得

额我主要说它的属性,和在添加cell的事件的时候如果使用block实现点击的事件。

block就是一个传值回调的一个过程,它能降低耦合度。block看似和对象没有多大的关系。但是里面的block却执行了关于对象的事件。他的语法那些视频上都有,这里就不多说了。

但是有这个3点。1.在block中引用局部的变量时会变成常量不可以修改 ,要想修改时必须是__block修饰时才可以修改 2.在内存方面还是局部变量会retain,__block修饰时不会retain 且block声明全局变量时,我们应该调用block的copy方法。为什么要引用计数要加一,因为要想调用执行block的代码必须block代码的调用,但是有可能整个代码执行完都没调用对象已经被销毁了如果以后调用的时候就可能没有什么用。3.如果在block中的代码中的对象是不可以销毁的这就造成内存的泄露,一个简单记得方法只要在block中用到对象都都要在外面用和它同一个对象类型用__block修饰。就是这么多。

分享一个我添加cell的事件的时候如果使用block实现点击的事件;

#import <UIKit/UIKit.h>

//传递的是用户点击cell的哪一行

typedef  void (^cellButton)(NSInteger indexPath);

@interface rootTableViewCell : UITableViewCell

//必须吧UITableView的tableView给UITableViewCell对象的属性tableView。这是就可以获得用户点击的cell的第几行。

@property (weak, nonatomic)UITableView *tableView;

@property(nonatomic,copy)cellButton cellblock;

@property (nonatomic) UIButton *myButton;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;

@end

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{

    self=[super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self){

        _myButton=[[UIButton alloc]init];

        _myButton.frame=CGRectMake(0, 0, 375, 100);

        [_myButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];

        

        [self addSubview:_myButton];

        

        

    }

    

    return self;

}

- (void)buttonAction:(id)sender {

//获取行数并且吧这个行数传给cellblock这个block块调用。

    NSIndexPath *indexpath=[[self tableView] indexPathForCell:self];

    if (_cellblock) {

        _cellblock(indexpath.row);

    }

       }

 

 -----------------------------------------------------------------

//在定制的UITableViewCell中,如果需要对cell中的控件添加事件响应,就要想办法把cell的indexPath传递给响应函数。下面是一个相对方便且耦合度低的方法。UICollectionView同样适用。在MyUITableViewCell中添加一个指向UITableView的指针,需要获取indexPath时,通过指针向tableView查询。在MyUITableViewCell中添加一个block属性,在实例化MyUITableViewCell时,给block赋值。在MyUITableViewCell的实现中响应MyButton的点击事件,在响应函数中调用block。

        cell.tableView = tableView;

 

        cell.cellblock = ^(NSInteger index){

            if (index==0) {

                mainViewController *mainView=[[mainViewController alloc]init];

                [self.navigationController pushViewController:mainView animated:YES];

                           }

    

        };

 -------------------------------------------------------------------------

写的比较乱额,我还是一个新手,里面有错误的地方还请不吝赐教,

额我主要说它的属性,和在添加cell的事件的时候如果使用block实现点击的事件。 block就是一个传值回调的...

现在要写成cell.textLabel.textAlignment =NSTextAlignmentCenter;

1、UIViewController

ViewCroller 

UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:nil] autorelease];

首先实现协议:<UITableViewDataSource,UITableViewDelegate>

#import "ViewController.h"

#import "Wodeyinyue.h"

#import "Yinyueguan.h"

#import "FaxianViewController.h"

#import "Gengduo.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//初始化4个控制器

Wodeyinyue *theWeixin = [[Wodeyinyue alloc]init];

theWeixin.title = @"我的音乐";

theWeixin.tabBarItem.image = [UIImage imageNamed:@"5"];

Yinyueguan *theCall = [[Yinyueguan alloc]init];

theCall.title = @"音乐馆";

theCall.tabBarItem.image = [UIImage imageNamed:@"6"];

FaxianViewController *theSearch = [[FaxianViewController alloc]init];

theSearch.title = @"发现";

theSearch.tabBarItem.image = [UIImage imageNamed:@"7"];

Gengduo *theMy  =[[ Gengduo alloc]init];

theMy.title = @"更多";

theMy.tabBarItem.image = [UIImage imageNamed:@"8"];

//创建主视图

//创建4个导航

UINavigationController *theWNav = [[UINavigationController alloc]initWithRootViewController:theWeixin];

UINavigationController *theCNav = [[UINavigationController alloc]initWithRootViewController:theCall];

UINavigationController *theSNav = [[UINavigationController alloc]initWithRootViewController:theSearch];

UINavigationController *theMNav = [[UINavigationController alloc]initWithRootViewController:theMy];

self.viewControllers = @[theWNav,theCNav, theSNav ,theMNav];

self.tabBarController.tabBar.tintColor = [UIColor redColor];

}

需要写成

2、创建属性:

视图1

static NSString *TableSampleIdentifier [email protected]"TableSampleIdentifier";

UITableView*personalTableView;

// 类的延展@interface Wodeyinyue(){

UITableViewCell *cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleValue1reuseIdentifier:TableSampleIdentifier];

NSArray*dataSource;

//创建表格对象

[selfpresentModalViewController:calendarViewanimated:YES];

3、

UITableView    *theTableView;

改成 [selfpresentViewController:calendarViewanimated:YEScompletion:^{}];

personalTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 44+20, SCREEN_WIDTH, SCREEN_HEIGHT-20-44-49) style:UITableViewStyleGrouped];

[self.view addSubview:personalTableView];

personalTableView.delegate=self;

personalTableView.dataSource=self;

personalTableView.bounces=NO;

personalTableView.showsVerticalScrollIndicator = NO;//不显示右侧滑块

personalTableView.separatorStyle=UITableViewCellSeparatorStyleSingleLine;//分割线

dataSource=@[@"我的分享",@"密码管理",@"用户协议",@"关于"];

//创建数组对象

新接口的差别是提供了一个参数,允许你传入一个block。这个block的回调方法在VC的viewWillDisappear方法后调用。也就是被隐藏的VC对象被释放后运行回调。

4、

NSArray  *theArr1;

这样做的好处:可以方便做多个UI效果之间的衔接和转换。

#pragma mark tableViewDelegate

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{//分组数 也就是section数

return 3;

}

//设置每个分组下tableview的行数

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

if (section==0) {

return 1;

}else if (section==1) {

return dataSource.count;

}else{

return 1;

}

}

//每个分组上边预留的空白高度

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{

return 20;

}

//每个分组下边预留的空白高度

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

{

if (section==2) {

return 40;

}

return 20;

}

//每一个分组下对应的tableview 高度

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

if (indexPath.section==0) {

return 80;

}

return 40;

}

//设置每行对应的cell(展示的内容)

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *identifer=@"cell";

UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:identifer];

if (cell==nil) {

cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifer];

}

if (indexPath.section==0) {

cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"userinfo"];

UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(12, 0, 80, 80)];

imageView.image=[UIImage imageNamed:@"usericon.png"];

[cell.contentView addSubview:imageView];

UILabel *nameLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 0, 60, 80)];

nameLabel.text=@"李晨";

[cell.contentView addSubview:nameLabel];

}else if (indexPath.section==1) {

cell.textLabel.text=[dataSource objectAtIndex:indexPath.row];

}else{

cell.textLabel.text=@"退出登陆";

cell.textLabel.textAlignment=NSTextAlignmentCenter;

}

return cell;

}

NSArray *theArr3;

在IOS7的PageControl控件

}

调用[self.subviewsobjectAtIndex:i]

@end

取出的不是UIImageView而是UIView

@implementation Wodeyinyue

所以updateDots方法应该这样写:

- (void)viewDidLoad {

-(void) updateDots{

    for (int i = 0; i < [self.subviews count]; i++) {
        UIView* dotView = [self.subviews objectAtIndex:i];

        if ([dotView isKindOfClass:[UIImageView class]]) {
            UIImageView* dot = (UIImageView*)dotView;
            if (i == self.currentPage)
                dot.image = _activeImage;
            else
                dot.image = _inactiveImage;
        }else{
            if (i == self.currentPage)
                [dotView setBackgroundColor:[UIColor colorWithPatternImage:_activeImage]];
            else
                [dotView setBackgroundColor:[UIColor colorWithPatternImage:_inactiveImage]];
        }

    }
}

[super viewDidLoad];

[text drawAtPoint:textPt withFont:[UIFontsystemFontOfSize:14.0f]]

self.tabBarController.tabBar.tintColor = [UIColor redColor];

在IOS7中应该写

self.tabBarController.tabBar.barTintColor = [UIColor blackColor];

 #define NLSystemVersionGreaterOrEqualThan(version)  ([[[UIDevice currentDevice] systemVersion] floatValue] >= version)
    #define IOS7_OR_LATER   NLSystemVersionGreaterOrEqualThan(7.0)
    if (IOS7_OR_LATER) {
        UIFont* font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
        font = [font fontWithSize:14.0f];
        [text drawAtPoint:textPt withAttributes:@{NSFontAttributeName:font}];
    }else {
        [text drawAtPoint:textPt withFont:[UIFont systemFontOfSize:14.0f]];
    }

//对表格和数组进行初始化

= UITextAlignmentCenter; 现在要写成cell.textLabel.textAlignment =NSTextAlignmentCenter; UITableViewCell *cell = [[[UITableViewCell alloc] initWith...

theTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStyleGrouped];

//添加表格协议

theTableView.delegate = self ;

theTableView.dataSource = self ;

//设置单元格颜色

theTableView.separatorColor = [UIColor blackColor];

//行高

theTableView.rowHeight = 60 ;

[self.view addSubview:theTableView];

theArr1 = [NSMutableArray arrayWithObjects:@"全部歌曲",@"下载歌曲",@"最近播放",@"iPod歌曲",nil];

theArr3 = @[[UIImage imageNamed:@"1.png"],[UIImage imageNamed:@"2.png"],[UIImage imageNamed:@"3.png"],[UIImage imageNamed:@"4.png"]];

#pragma -

#pragma mark -UITableViewDataSource

}    //设置分区的个数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 3;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

if (section == 0) {

return 1;

}

else if (section ==1) {

return 4 ;

}else if(section ==2) {

return 2;

}

return 0;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"1508E"];

if (!cell) {

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"1508E"];

}

//添加箭头符号

cell.accessoryType =UITableViewCellAccessoryDisclosureIndicator;

//第一个分区

if (indexPath.section == 0)

{

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];

cell.imageView.image = [UIImage imageNamed:@"10"];

cell.textLabel.text = @"未登录";

cell.detailTextLabel.text = @"登陆后,和朋友们分享音乐";

UILabel *loginLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 70, 30)];

loginLabel.textColor = [UIColor redColor];

loginLabel.text = @"登录";

loginLabel.layer.borderColor = [[UIColor redColor] CGColor];

loginLabel.layer.borderWidth = 1.0;

loginLabel.layer.cornerRadius = 5.0;

loginLabel.textAlignment = NSTextAlignmentCenter;

cell.accessoryView = loginLabel;

}

else if(indexPath.section == 1)

{

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];

cell.imageView.image = [UIImage imageNamed:@"10"];

cell.textLabel.text = @"未登录";

cell.detailTextLabel.text = @"登陆后,和朋友们分享音乐";

UILabel *loginLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 70, 30)];

loginLabel.textColor = [UIColor redColor];

loginLabel.text = @"登录";

loginLabel.layer.borderColor = [[UIColor redColor] CGColor];

loginLabel.layer.borderWidth = 1.0;

loginLabel.layer.cornerRadius = 5.0;

loginLabel.textAlignment = NSTextAlignmentCenter;

cell.accessoryView = loginLabel;    }

else

{

if (indexPath.row == 0)

{

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];

cell.textLabel.text = @"我的歌单";

cell.accessoryType =  UITableViewCellAccessoryDisclosureIndicator;

}

else

{

cell = [[UITableViewCell alloc] init];

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 300, 40)];

label.textAlignment = NSTextAlignmentCenter;

label.text = @"登录账户,点击红心收藏喜欢的歌曲,n实时同步到你的所有设备";

label.font = [UIFont systemFontOfSize:12];

label.numberOfLines = 2;

[cell addSubview:label];

}

}

return cell;

}

@end

轮播图使用

#import "ViewController.h"#import "FirstViewController.h"@interface ViewController (){

UIScrollView *theScr;

NSArray *theArray;

UIPageControl *thePage;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//初始化滚动视图

theScr = [[UIScrollView alloc]initWithFrame:self.view.frame];

//设置代理

theScr.delegate = self;

//设置按页滚动

theScr.pagingEnabled = YES;

//设置是否显示滚动条

theScr.showsHorizontalScrollIndicator = NO;

//加载

[self.view addSubview:theScr];

theArray = @[@"4.png",@"5.jpg",@"6.jpg",@"7.jpg"];

CGFloat x = 0.0;

for (int i = 0 ; i<theArray.count;i++){

UIImageView *theImage = [[UIImageView alloc]initWithFrame:CGRectMake(x, 0, self.view.frame.size.width, self.view.frame.size.height)];

theImage.image = [UIImage imageNamed:theArray[i]];

x = x+self.view.frame.size.width;

[theScr addSubview:theImage];

if (i==theArray.count -1) {

UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake((self.view.frame.size.width-100)/2, 550, 100, 40)];

[button setTitle:@"立即体验" forState:UIControlStateNormal];

[button setBackgroundColor:[UIColor colorWithRed:29/250.0 green:170/250.0 blue:230/250.0 alpha:1.0]];

[button addTarget:self action:@selector(tz) forControlEvents:UIControlEventTouchUpInside];

button.layer.cornerRadius = 10;

button.layer.masksToBounds = YES;

theImage.userInteractionEnabled=YES;

[theImage addSubview:button];

}

}

theScr.contentSize = CGSizeMake(x, self.view.frame.size.height);

//初始化一个分页控制器的个数

thePage= [[UIPageControl alloc]initWithFrame:CGRectMake(self.view.frame.size.width/2-30, self.view.frame.size.height/5*4, 60, 20)];

//设置分页的个数

thePage.numberOfPages = theArray.count;

//设置分页控制器的颜色

thePage.pageIndicatorTintColor = [UIColor grayColor];

//设置分页控制器选中时的颜色

thePage.currentPageIndicatorTintColor = [UIColor redColor];

//加载

[self.view addSubview: thePage];

}

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{

thePage.currentPage = theScr.contentOffset.x/self.view.frame.size.width;

}

-(void)tz

{

FirstViewController *jie1 = [FirstViewController new];

[self presentViewController:jie1 animated:YES completion:^{}];

}

上一篇:Cheatsheet: 2014 06.01 ~ 06.30 下一篇:没有了
返回顶部