美文网首页
UITableView登录状态和非登录状态cell显示不同的布局

UITableView登录状态和非登录状态cell显示不同的布局

作者: Accepted_ | 来源:发表于2017-04-13 00:30 被阅读0次

    在没有数据数组(数据源)的情况下,deleteRows然后insertRows这个会崩溃。

    然后换了第二种办法,把所有需要的控件都添加在cell中,在cell中增加一个对外的成员变量接口(flag),在方法内部实现setFlag:方法,来设置对应的控件隐藏或显示。也是没有反应。比如非登录状态我想只显示控件1和2,登录状态我想只显示控件3和4.

    if(flag) {

    //登录,显示3、4,隐藏1、2

    self.control3.hidden =NO;

    self.control4.hidden=NO;

    self.control1.hidden = YES;

    self.control2.hidden=YES;

    }else{

    //非登录,显示1、2,隐藏3、4

    self.control3.hidden =YES;

    self.control4.hidden=YES;

    self.control1.hidden=NO;

    self.control2.hidden=NO;

    }

    然后在设置完这些后,我各个地方调用了

    [self layoutSubviews];

    [self layoutIfNeeded];

    [self.tableView reloadData];

    [self.tableViewreloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];

    都没有反应。

    考虑了一下[self.tableView reloadData];这个方法,是根据数据源,重新刷新cell上的数据。我可不可以在Controller里定义一个成员变量,记录登录状态。自定义两种cell,分别按照登录状态和非登录状态布局,然后在cellForRowAtIndexPath这个方法里判断,如果登录状态,返回登录状态的cell,如果非登录状态,返回非登录状态的cell,每次刷新的tableView的时候自己判断取哪个cell。这样,在登录成功要改变布局的方法里,改变登录状态这个成员变量,然后[self.tableView reloadData];他就会重新走cellForRowAtIndexPath,然后重新根据登录状态加载cell。经过验证,这个方法上行得通的。代码就不贴啦。多思考。看不懂的可以一起讨论。有错误欢迎指出。

    相关文章

      网友评论

          本文标题:UITableView登录状态和非登录状态cell显示不同的布局

          本文链接:https://www.haomeiwen.com/subject/czmvattx.html