ios - 利用复合语句创建对象,在本VC的其他方法怎么调用其对象

 流浪的牛仔2011Ting_883 发布于 2022-10-28 14:54
**代码如下** 怎么提取最外层新创建的对象
UIView *addCard = ({
                        UIButton *addCard = UIButton.new;
                        [footer addSubview:addCard];
                        self.addProject = addCard;
                        [addCard makeConstraints:^(MASConstraintMaker *make) {
                            make.left.equalTo(0);
                            make.top.equalTo(0);
                            make.right.equalTo(0);
                            make.bottom.equalTo(0);
                        }];
                        [addCard setTitle:@"添加任务" forState:UIControlStateNormal];
                        [addCard setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
                        
                        //                            [addCard addTarget:self action:@selector(addCard:) forControlEvents:UIControlEventTouchUpInside];
                        //使用ReactiveCocoa处理点击事件,相当于上面的addTarget:方法
                        //addCard点击事件
                        [[addCard rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
                            //隐藏addCard
                            addCard.alpha = 0;
                            
                            //输入框
                            UITextView *textView = ({
                                self.viewText = [UITextView new];
                                [footer addSubview:self.viewText];
                                [self.viewText makeConstraints:^(MASConstraintMaker *make) {
                                    make.left.equalTo(10);
                                    //                                    make.top.equalTo(3);
                                    make.right.equalTo(-10);
                                    make.bottom.equalTo(-44+2);
                                }];
                                //因为footer变大,所以改变tableView的contentInset
                                listTableView.contentInset = UIEdgeInsetsMake(46, 0, 88, 0);
                                //立即刷新视图
                                [self layoutIfNeeded];
                                
                                _viewText;
                            });
                            self.textView = textView;
                            //初始化add按钮
                            UIButton *add = ({
                                UIButton *view = [UIButton new];
                               
                                view.contentHorizontalAlignment=UIControlContentHorizontalAlignmentRight;
                                [view setTitle:NSLocalizedString(@"add", nil) forState:UIControlStateNormal];
                                [view setTitleColor:Global_trelloBlue forState:UIControlStateNormal];
                                view.titleLabel.font = [UIFont systemFontOfSize:15];
                                [footer addSubview:view];
                                [view makeConstraints:^(MASConstraintMaker *make) {
                                    make.right.equalTo(-20);
                                    make.bottom.equalTo(-1);
                                    make.width.equalTo(100);
                                }];
                                [view sizeToFit];
                                //初始化后隐藏(为了动画效果)
                                view.alpha = 0;
                                //立即刷新
                                [self layoutIfNeeded];
                                
                                //add点击事件,创建新的tast
                                [[view rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
                                    //textView判空
                                    if (![textView.text isEqualToString:@""]) {
                                        AddTaskApi *api = AddTaskApi.new;
                                        //如果在没有task的列添加新的task,t_sort传0
                                        
                                        api.t_sort = @(0);
                                        //都上传0
                                        //                                        if (listTableView.model.tasks.count == 0) {
                                        //                                            api.t_sort = @(0);
                                        //                                        }
                                        //                                        else { //否则传当前列最后一个task的t_sort,再加0.1
                                        //                                            TaskModel *model = listTableView.model.tasks[listTableView.model.tasks.count-1];
                                        //                                            api.t_sort = @(model.t_sort.doubleValue+0.1);
                                        //                                        }
                                        
                                        api.t_taskContent = textView.text;
                                        api.t_projectId = @(_project_id.integerValue);
                                        //当前列的id
                                        api.t_panel_id = @(listTableView.model.id.integerValue);
                                        //发起请求
                                        [api startWithCompletionBlockWithSuccess:^(YTKBaseRequest *request) {
                                            
                                            NewTasklistModel *model = request.responseModel;
                                            //存在即失败(接口定义,只在失败时才返回status值)
                                            if (model.status) {
                                                
                                            }
                                            else { //添加成功
                                                textView.text = nil;
                                                //更新数据源
                                                [listTableView.model.task addObject:model];
                                                
                                             
                                                //插入行
                                               [listTableView insertRow:(listTableView.model.task.count-1)inSection:0 withRowAnimation:
                                                 UITableViewRowAnimationBottom];

                                                
                                            //计算rowHeight
                                                CGFloat rowHeight = [self tableView:listTableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:listTableView.model.task.count-1 inSection:0]];
                                                
                                               
                                                //根据当前列高度和rowHeight决定列高度是否增加
                                                //updateConstraints:方法更新autolayout
                                               
                                                [listView updateConstraints:^(MASConstraintMaker *make) {
                                                    //增加新的rowHeight后list超出允许最大高度,之前不满最大高度
                                                    if (listTableView.cellTotalHeight > (kTotalCellMaxHeight+NavAndStatusBarHeight-_keyboardHeight-44) && (listTableView.cellTotalHeight-rowHeight) < (kTotalCellMaxHeight+NavAndStatusBarHeight-_keyboardHeight-44)) {
                                                        make.height.equalTo(listView.yyHeight+((kTotalCellMaxHeight+NavAndStatusBarHeight-_keyboardHeight-44)-(listTableView.cellTotalHeight-rowHeight)));
                                                    }
                                                    
                                                    //增加新的rowHeight后list没有超过允许最大高度
                                                    if (listTableView.cellTotalHeight <= (kTotalCellMaxHeight+NavAndStatusBarHeight-_keyboardHeight-44)) {
                                                        make.height.equalTo(listView.yyHeight+rowHeight);
                                                    }
                                                }];
                                         
                                                
                                                //autolayout动画
                                                [UIView animateWithDuration:0.25 animations:^{

                                                    [self layoutIfNeeded];
                                                
                                                }];
                                                
                                            
                                                //tableView滚动到最底部,显示新添加行
                                                [listTableView scrollToRow:listTableView.model.task.count-1 inSection:0 atScrollPosition:UITableViewScrollPositionBottom animated:NO];
                                                
                                                //改变原列的标题数量
                                                UITextField *sourceListTableHeaderTF=(UITextField *)[self viewWithTag:[listTableView.model.id integerValue]];
                                                sourceListTableHeaderTF.text=[NSString stringWithFormat:@"%@ %ld",listTableView.model.name,(unsigned long)listTableView.model.task.count];
                                                
                                            }
                                        } failure:^(YTKBaseRequest *request) {
                                            
                                        }];
                                    }
                                }];
                                view;
                            });
                            self.addBtn = add;
                            //初始化cancel按钮
                            UIView *cancel = ({
                                UIButton *viewCancel = [UIButton new];
                                viewCancel.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;
                                [viewCancel setTitle:NSLocalizedString(@"cancel", nil) forState:UIControlStateNormal];
                                [viewCancel setTitleColor:Global_trelloBlue forState:UIControlStateNormal];
                                viewCancel.titleLabel.font = [UIFont systemFontOfSize:15];
                                [footer addSubview:viewCancel];
                                [viewCancel makeConstraints:^(MASConstraintMaker *make) {
                                    make.left.equalTo(20);
                                    make.bottom.equalTo(-1);
                                    make.width.equalTo(100);
                                    
                                }];
                                
                                [viewCancel sizeToFit];
                                viewCancel.alpha = 0;
                                [self layoutIfNeeded];
                            
                                //cancel点击事件
                                @weakify(self, viewCancel, textView, footer, listView, add, addCard)
                                [[viewCancel rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
                                    @strongify(self, viewCancel, textView, footer, listView, add, addCard)
                                    //footer高度还原
                                    [footer updateConstraints:^(MASConstraintMaker *make) {
                                        make.height.equalTo(44);
                                    }];
                                    //list减去footer增加的高度(在这里做是为了动效)
                                    [listView updateConstraints:^(MASConstraintMaker *make) {
                                        make.height.equalTo(listView.yyHeight-44);
                                    }];
                                    //tableView的contentInset还原
                                    listTableView.contentInset = UIEdgeInsetsMake(46, 0, 44, 0);
                                    //隐藏textView
                                    textView.alpha = 0;
                                    
                                    [UIView animateWithDuration:0.25 animations:^{
                                        //cancel隐藏
                                        viewCancel.alpha = 0;
                                        //add隐藏
                                        add.alpha = 0;
                                        //addCard显示
                                        addCard.alpha = 1;
                                        [self.viewController.navigationController setNavigationBarHidden:NO animated:YES];
                                        [self layoutIfNeeded];
                                    }];
                                    [textView resignFirstResponder];
                                }];
                                viewCancel;
                            });
                            self.viewCancel = cancel;
                            //addCard点击后动效
                            [footer updateConstraints:^(MASConstraintMaker *make) {
                                make.height.equalTo(44+44);
                            }];
                            
                            [textView updateConstraints:^(MASConstraintMaker *make) {
                                make.top.equalTo(2);
                            }];
                            
                            [listView updateConstraints:^(MASConstraintMaker *make) {
                                make.height.equalTo(listView.yyHeight+44);
                            }];
                            
                            [UIView animateWithDuration:0.25 animations:^{
                                [self.viewController.navigationController setNavigationBarHidden:YES animated:YES];
                                add.alpha = 1;
                                cancel.alpha = 1;
                                [self layoutIfNeeded];
                            }];
                            //弹出键盘
                           [textView becomeFirstResponder];
                        }];
                        addCard;
                    });
1 个回答
  • 用一个全局的弱引用属性,不就全局可见了, 跟以什么方式创建的对象没啥关系。

    2022-11-12 01:45 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有