【问题标题】:How to change specific element in row without reloading row in Objective-C?如何在不重新加载Objective-C中的行的情况下更改行中的特定元素?
【发布时间】:2018-11-24 11:32:47
【问题描述】:

我想在UITableView 中连续更新一个UiSwitch。我想通过动画以编程方式打开和关闭它。

    NSIndexPath *indexPath = [[NSIndexPath indexPathForRow:0 inSection:lastSelectedCardSectionNumber] retain];
    newCell *cell = (newCell *)[self.myTableView dequeueReusableCellWithIdentifier:@"newCell" forIndexPath:indexPath];
    [cell.switch1 setOn:YES animated:YES];

但上面的行不会改变状态,我必须重新加载不会使 UiSwitch 状态随动画变化的行。


开关顶部有一个视图,用户可以点击它来更改开关的状态。但它应该在某些情况下改变。因此我不允许用户更改它我想以编程方式更改它。

【问题讨论】:

  • 你是怎么触发这个的?在tableViewdidSelect 上?
  • @hardikparmar 我在开关上设置了一个 uiview 以避免用户更改开关状态。当点击该视图时,我有时(取决于某些因素)会更改其状态
  • 将您如何检索cell 的整个代码放入视图的触摸操作中。另外,您是否检查过您在视图中设置的操作是否被调用?
  • @hardikparmar 谢谢。我更新了我的答案。是的,它被调用了,当我编写 reload row 方法而不是 setOn 时,它可以工作但没有动画开关。
  • 检查我的答案。

标签: ios objective-c uiswitch


【解决方案1】:

问题在于您如何检索cell。应该是:

newCell *cell = (newCell *)[self.tableView cellForRowAtIndexPath:indexPath];

不是这个:

newCell *cell = (newCell *)[self.myTableView dequeueReusableCellWithIdentifier:@"newCell" forIndexPath:indexPath];

前者获取已存在的单元格实例,但后者创建单元格的新实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 2015-03-24
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2021-09-10
    • 2020-12-29
    • 1970-01-01
    相关资源
    最近更新 更多