0

我有一个表格视图,按下时会加载一个新的 .xib。问题是,我需要将自定义对象传递给新的 .xib。到目前为止,我有:

-(UITableViewCell *)doTestCellForTableView:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath {

 //some other code for current view
 TestObj *testobj = [[TestObj alloc]init];

 if(shouldGo){
   cell.userInteractionEnabled = YES;
   UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(loadTestView:)];
   tapped.numberOfTapsRequired = 1;
   [cell addGestureRecognizer:tapped];
 }

在那个方法中:

-(void)loadTestView:(TestObj *)withTestObj{

TestViewController *newView =
[[TestViewController alloc] init];
//Set the property of type TestObj
newView.testobjprop = withTestObj;

[self presentViewController:newView animated:YES completion:nil];
}

它抛出 NSInvalidArgumentException。我怎样才能到达选择器将发送在 tableview 方法中初始化的“testobj”的位置,以便我可以在那里访问它?

如果我注释掉“newView.testobjprop = withTestObj;”,新的 .xib 就可以正常加载 在 loadTestView 方法中。所以我认为问题就在那里,问题在于如何将一个对象从一个 .xib 传递到另一个。

4

1 回答 1

0

参数 from-(void)loadTestView:(TestObj *)withTestObjUIGestureRecognizertype 所以这就是你得到NSInvalidArgumentException.

如果您将其更改为-(void)loadTestView:(UITapGestureRecognizer *)withTestObj它将是正常行为。

这就是您需要使用的原因,didSelectRow:AtIndexPath以便您可以将正确的值传递给viewcontroller.

在这里你根本没有使用TestObj *testobj = [[TestObj alloc]init];

于 2013-07-09T20:11:19.650 回答