ios - 利用复合语句创建对象,在本VC的其他方法怎么调用其对象
PHPz
PHPz 2017-04-18 09:34:58
0
1
496
**代码如下** 怎么提取最外层新创建的对象
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;
                    });
PHPz
PHPz

学习是最好的投资!

membalas semua(1)
洪涛

Jika anda menggunakan atribut rujukan lemah global, ia akan kelihatan secara global dan ia tidak ada kaitan dengan cara objek itu dicipta.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan