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から別の.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 に答える