当前位置: 首页 > 工具软件 > iOS Block UI > 使用案例 >

IOS block简单使用

傅俊德
2023-12-01

iOS中block的使用分为三个部分

1、第一部分声明,定义和使用Block,

2、第二部分__block关键字的使用

3、第三部分:Block作为property属性实现页面之间传值

日常项目中使用最多的是block的反向传值

这里总结了一下block的普通传值和在cell中的使用(经常用到)

1,普通的反向传值

block三部曲

声明:

@property (nonatomic,copy)void (^block) (NSString * text);

定义:

//结束编辑

-(void)textFieldDidEndEditing:(UITextField *)textField

{

    //block赋值

    if (textField.text.length>0) {

        

        self.block(textField.text);

        

        [self.navigationControllerpopViewControllerAnimated:YES];

    }


}

使用:

//点击屏幕任一位置跳转界面

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    SecondViewController*svc=[[SecondViewControlleralloc]init];

    

    //block的值

    

    svc.block = ^(NSString * text){

        

        self.navigationItem.title=text;

    

    };

    

    [self.navigationControllerpushViewController:svcanimated:YES];


}

这里避免重复定义或者使用,否则会崩溃

2 在cell中的使用

1>声明:@property (strong,nonatomic)void (^didCollection)(LocationCityEntity *,NSIndexPath *);//传模型和系统的NSIndexPath 方便使用组和行

2>在系统方法中定义

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{

   LocationCityEntity * entity =self.hotArray[indexPath.row];

    if(self.didCollection){

        self.didCollection(entity,indexPath);//赋值模型和系统indexPath

    }

}

3>在CitySelectViewController cell中的实现使用

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

{

    UITableViewCell *cell;

    

    if (tableView!=self.myTableView) {

        staticNSString* cellId=@"cellId";

            __weaktypeof(self) weakSelf=self;

            myCell.didCollection=^(LocationCityEntity * entity,NSIndexPath *indexpa)

            {

                typeof(self) strongSelf=weakSelf;

                        NSString *msg = [NSStringstringWithFormat:@"切换地区将会登出当前账号,是否要切换至%@站?",entity.zxprovince];

                        UIAlertView *alert =[[UIAlertViewalloc]initWithTitle:@"提示"message:msgdelegate:selfcancelButtonTitle:@"取消"otherButtonTitles:@"确定",nil];

                        alert.tag =indexpa.row;

                        strongSelf.isShow=NO;

                        [alert show];

                

            };

            cell = myCell;

        

         

        }

        

   }

    return cell;

}


此文中掺杂个人理解,如果错误或者疑问,欢迎沟通

附件:地区筛选的demo(免积分下载),使用了block ,类扩展,本地保存等(只为共同学习)

http://download.csdn.net/detail/bddzzw/9597894



 类似资料: