开发中遇到的问题小记

1. 问题一
表现方面:自己布局的时候用tableview中的cell的宽度来确定其他控件的坐标,结果发现出现了问题第一次进入的时候布局是错乱的,第二次发现坐标布局是正确的。
解决方法:把控件的坐标判断用确定的宽度来写。比如说tableView的宽度。还有屏幕的宽度以及其他确定的宽度。
产生的原因:
2.问题二
技术点解析:今天在写项目的时候把cell的渲染写在cell里。没有写到控制器里。这样写的好处是提高了代码的复用。并且降低了代码间的耦合度。高内聚低耦合。比如说
在cell的.h里面写。
+ ( RyxCommentListViewCell *)renderCommentListCell:( UITableView *)tableView cellForRow:( NSInteger )row dataSoueceElement :( id )dataSourceElement;
+ (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath dataSoueceElement:(id)dataSourceElement cell:(RyxCommentListViewCell *)cell;
在.m里面进行
+ (UITableViewCell *)renderCommentListCell:(UITableView *)tableView cellForRow:(NSInteger)row dataSoueceElement:(id)dataSourceElement {
    RyxCommentListViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"commentListCell" ];
    cell.
dataSourceElement = dataSourceElement;
   
RyxCommentOC *commentOC = ( RyxCommentOC *)dataSourceElement[row];
    [[cell thunmbnailImageView] setImage:[[RyxSharedStoragesharedStorage]launchScreenImage]];
    [[cell thunmbNameLabel ] setText :[[commentOC owner ] name ]];
   
NSString *timeStamp = [ RyxTimeStamp getTimeIndicateCreateAt :[commentOC timestamp ]];
    [[cell
timeStampLabel ] setText :timeStamp];
    [[cell
commentContentLabel ] setText :[commentOC content ]];
   
return cell;
}
// 这个方法主要目的是为了自适应高度。
+ ( CGFloat )tableView:( UITableView *)tableView heightForRowAtIndexPath:( NSIndexPath *)indexPath dataSoueceElement:( id )dataSourceElement cell:( RyxCommentListViewCell *)cell {
     cell.
dataSourceElement = dataSourceElement;
    
RyxCommentOC *commentOC = ( RyxCommentOC *)dataSourceElement[indexPath. row ];
     [[cell
commentContentLabel ] setText :[commentOC content ]];
     [cell
sizeToFit ];
     [cell
setNeedsLayout ];
   
CGFloat height = [cell systemLayoutSizeFittingSize : UILayoutFittingCompressedSize ]. height ;
   
return height + 1;
}

3.问题三:
今天遇到一个问题就是cell里面有两个label 对cell渲染是在cell类里面的并没有在view controller里渲染。点击cell中的label想要响应一个方法  采用以下的方法 来解决
public extension UIView {
    public func viewController() -> UIViewController ? {
       
let vcc = UIViewController . self
       
var responder: UIResponder ? = self
       
while responder != nil   {
           
if (responder?. isKindOfClass (vcc) != nil ) {
               
return responder as ? UIViewController
            }
            responder = responder?.
nextResponder ()
        }
       
return nil
    }
}
通过这个view找到他的响应者view controller 然后可以通过这个view controller来进行跳转。

4. 问题四:
   自己在写代理方法的时候出现警告:Assigning to 'id<xxxProtocol> from  incompatible type 'ViewController *const __strong'
这个错误自己不应该犯了,原因是自己写了代理可是没有遵循这个代理。加上代理实现代理方法就ok了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值