下面我有这个委托方法,即在我的tableview中设置几个字段。当按下其中一个tableview单元格时,它会加载一个带有更多tableview单元格的子视图,当选择一个时,会从viewcontrolle弹出视图,并将选定的值加载到最初选择的parentviews单元格中。
这个主单元影响我能够在第二个单元格中设置的内容。因此,当单击它时,它会显示与第一个选择相关的数据。
我正在让我的用户回到任何一个单元格来改变他们的选择..或者他们可能会回想他们想要改变但是没有。
在我的父视图的第二个tableviewcell中,如果第一个单元格更改,则需要更改,如果第一个单元格dosnt的值发生更改,则需要保持不变。
我有一个与第一个单元格一起使用的委托,它是我试图控制第二个单元格的值的地方,如下所示。
- (void) setManufactureSearchFields:(NSArray *)arrayValues withIndexPath:(NSIndexPath *)myIndexPath
{
manufactureSearchObjectString = [[arrayValues valueForKey:@"MANUFACTURER"] objectAtIndex:0];
manufactureIdString = [[arrayValues valueForKey:@"MANUFACTURERID"] objectAtIndex:0]; //Restricts Models dataset
manufactureResultIndexPath = myIndexPath;
[self.tableView reloadData]; //reloads the tabels so you can see the value in the tableViewCell.
//need some sort of if statment here so that if the back button is pressed modelSearchObjectString is not changed..
if (oldManufactureSearchObjectString != manufactureSearchObjectString) {
modelResultIndexPath = NULL;
modelSearchObjectString = @"empty";
oldManufactureSearchObjectString = manufactureSearchObjectString;
}
}
事实上,即使为第一个单元格选择了相同的单元格,它每次都会输入if语句。(在这种情况下,不应该输入if语句。
我想我可以通过检查oldMan vrs man来做到这一点!=然后通过并设置第二个单元格的东西,然后将man传递给oldMan,这样下次使用第一个单元格时它就有一个值来对抗comapre。但显然这似乎不起作用。我的逻辑是坏的还是我的代码中的东西。
这就是我在.h中设置这些值的方法,它们都是@synthesised
//...
NSString *manufactureSearchObjectString;
NSString *oldManufactureSearchObjectString;
NSString *manufactureIdString;
NSIndexPath *manufactureResultIndexPath;
//...
@property (copy) NSString *manufactureSearchObjectString;
@property (copy) NSString *oldManufactureSearchObjectString;
@property (copy) NSString *manufactureIdString;
@property (copy) NSIndexPath *manufactureResultIndexPath;
//...
答案 0 :(得分:3)
您必须比较NSStrings的值如下:
BOOL isEqual = [aString isEqualToString:bString]; // provide aString and bString
if (!isEqual)
{
// code
}
你所做的就是比较指针,对于相同值的字符串可能会有所不同。