在我的ToDoList应用程序中,我有一个表视图,用户可以在其中添加他/她必须完成的项目。当他们点击他们创建的项目时,会将其发送到有切换的详细信息页面。如果切换开关,则应更新单元格,并且其背景颜色应为红色。我不知道如何从不同的页面访问该tableviewcell。这就是我到目前为止所做的:
if (switchToggle.on) {
NSLog(@"The switch is on!");
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Item Updated" message:@"This item has been set to 'Urgent'" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:@"Cancel", nil];
[myAlertView show];
}
else
{
NSLog(@"The switch is off!");
}
所有帮助表示赞赏,提前致谢
答案 0 :(得分:0)
当然,你应该有一个对象形式的数组,你可以在每个单元格中加载信息。
在对象类中,您应该拥有如下属性:
@property (assign, nonatomic, getter=isOn) BOOL on;
因此,当您访问详细信息视图控制器时,您应该传递此对象,例如:
detailsViewController.myObject = myArrayOfObject[indexPath.row];
因此,在切换时在控制器中,您可以在该属性中设置YES
或NO
,并通过delegate
调用先前视图控制器中的方法重新加载单元格。
使用委托模式是正确的方法。
但如果你愿意,你也可以这样做:
当您回来时,您必须重新加载tableViewCell
,因此您需要在indexPath
之前保存detailsViewController
。因此,您可以将其保存在变量中,然后当您返回到上一个视图控制器时,在viewDidAppear
或viewWillAppear
中:
if (savedIndexPath) {
[myTable reloadRowsAtIndexPaths:@[savedIndexPath] withRowAnimation:YES];
}
或者您可以再次通过KVO
观察该属性,并在更改属性时自动获取呼叫。
您有很多解决方案和设计模式可以帮助您。例如,请参阅Delegation
和KVO (Key Value Observing)
。