CodingNet - Learning - 17

接下来我们进入任务这个菜单选项,直接看页面构成还是算比较简单的,但其实相当复杂,无论从实现上还是说页面逻辑都是很冗大,我们将要分很多篇文章来学习它:

直接的页面实现上是,一个TableView分为两个Section,第一个Section分别两个Cell,下面的Section分为4个不同的Cell,并且根据iOS6的注册UITableViewCell的方法:

        [tableView registerClass:[TaskContentCell class] forCellReuseIdentifier:kCellIdentifier_TaskContent];
        [tableView registerClass:[LeftImage_LRTextCell class] forCellReuseIdentifier:kCellIdentifier_LeftImage_LRText];
        [tableView registerClass:[TaskCommentCell class] forCellReuseIdentifier:kCellIdentifier_TaskComment];
        [tableView registerClass:[TaskCommentCell class] forCellReuseIdentifier:kCellIdentifier_TaskComment_Media];
        [tableView registerClass:[TaskActivityCell class] forCellReuseIdentifier:kCellIdentifier_TaskActivityCell];
        [tableView registerClass:[TaskDescriptionCell class] forCellReuseIdentifier:kCellIdentifier_TaskDescriptionCell];

会更加简洁


这个页面还是挺有意思的,所以打算分的细讲,从上往下开始讲,可以看到,完成的可选状态也是由RAC控制:

    @weakify(self);
    RAC(self.navigationItem.rightBarButtonItem, enabled) =
    [RACSignal combineLatest:@[RACObserve(self, myCopyTask.content),
                               RACObserve(self, myCopyTask.owner),
                               RACObserve(self, myCopyTask.priority),
                               RACObserve(self, myCopyTask.status),
                               RACObserve(self, myCopyTask.deadline),
                               RACObserve(self, myCopyTask.task_description.markdown)] reduce:^id (NSString *content, User *owner, NSNumber *priority, NSNumber *status, NSString *deadline){
                                   @strongify(self);
                                   BOOL enabled = ![self.myCopyTask isSameToTask:self.myTask];
                                   if (self.myCopyTask.handleType > TaskHandleTypeEdit) {
                                       enabled = ([self.myCopyTask.content trimWhitespace].length > 0 &&
                                                  self.myCopyTask.project != nil &&
                                                  self.myCopyTask.owner != nil);
                                   }
                                   return @(enabled);
                               }];

看到这段代码,RAC信号道将self.navigationItem.rightBarButtonItem对象和它的属性绑定后,然后绑定self的数据Model对象myCopyTask,并且根据其逻辑是否返回Bool类型



先试着点击“执行者”,可以看到提示,特别喜欢CodingNet的写法,放在Category里面:

+ (void)showHudTipStr:(NSString *)tipStr{
    if (tipStr && tipStr.length > 0) {
        MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:kKeyWindow animated:YES];
        hud.mode = MBProgressHUDModeText;
        hud.detailsLabelFont = [UIFont boldSystemFontOfSize:15.0];
        hud.detailsLabelText = tipStr;
        hud.margin = 10.f;
        hud.removeFromSuperViewOnHide = YES;
        [hud hide:YES afterDelay:1.0];
    }
}
[NSObject showHudTipStr:@"需要选定所属项目先~"];

然后我们点击最后一行:
可以看到一个类似UIActionSheet的选择器效果,这个是直接用了控件:ActionSheetDatePicker
这个使用上很简单,就不多说了
下篇回头来讲 “添加标签” 这个所在的Cell的实现,非常复杂哦,也非常期待!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值