Ios 如何将indexpath.row移动到新的视图控制器

Ios 如何将indexpath.row移动到新的视图控制器,ios,objective-c,Ios,Objective C,我正在尝试将此indexPath.row移动到视图控制器pageView 这就是我尝试过的: 首先,从相应的按钮获取indexPath行 表格单元格中有一个按钮nav 下面是我如何导航到pageView 其中link是seague标识符 这就是我试图分享它的方式 其中name是pageView 但我得到了一个错误: -[ImagesTableViewController tag]: unrecognized selector sent to instance 什么都没有被记录为什么?我

我正在尝试将此
indexPath.row
移动到视图控制器
pageView

这就是我尝试过的:
首先,从相应的按钮获取indexPath行 表格单元格中有一个按钮
nav


下面是我如何导航到
pageView
其中
link
是seague标识符


这就是我试图分享它的方式 其中
name
pageView


但我得到了一个错误:

-[ImagesTableViewController tag]: unrecognized selector sent to instance

什么都没有被记录为什么?我做错了什么?

进一步解释@bobnoble的解释:

naviguate
方法中,调用

[self performSegueWithIdentifier:@"link" sender:self];
请注意,您将“self”传递为发送者。这意味着在prepareForSegue中,sender参数将包含当前视图控制器

如果您的
naviguate
方法是一个iAction,因为它有一个sender参数,那么为什么不这样更改它呢:

-(IBAction) naviguate:(id)sender 
{
  [UIView animateWithDuration:0.5
    delay:0
    options: UIViewAnimationOptionCurveEaseOut
    animations:^
    {
      [_tableView setFrame:CGRectMake(0, 569, _tableView.frame.size.width, 
      _tableView.frame.size.height)];
    }
    completion:^(BOOL finished)
    {
      [self performSegueWithIdentifier:@"link" sender: sender]; //Changed to pass sender
    }
  ];
}
这样,您就可以将发送者从操作方法传递到序列

在尝试从“标记”选择器获取标记值之前,我仍然会更改您的prepareForSegue方法,以确保发送方响应“标记”选择器:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  UIButton *theButton=(UIButton *)sender;
  if([segue.identifier isEqualToString:@"link"])
  { 
    int tag = -1
    if (![theButton respondsToSelector: @selector(tag)])
      NSLog(@"Sender does not respond to 'tag'!");
    else
    {
      int tag = theButton.tag;

      NSLog(names[tag]);
      controller.name.text = names[theButton.tag];
    }
   }
}
不要从
imageViewController
设置控件(标签)属性,而是要将a
NSString
传递给这个新的页面视图实例

执行此步骤后,在
viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.name.text = _blogName;
}
将属性添加到
pageView.h

@property (strong, nonatomic) IBOutlet NSString *blogName;
更改segue代码

controller.name.text = names[theButton.tag];

在页面
viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.name.text = _blogName;
}

错误是说
ImagesTableViewController
没有
tag
方法,即
prepareforsgue
中的
sender
ImagesTableViewController
没有
tag
方法(或属性)。然而,
prepareForSegue
的实现假设
sender
是一个
ui按钮
,它确实有一个
标记
方法,因此您的代码编译时不会出错。那么我应该如何将其更改为抱歉?@Maximilian请在将标记描述应用于您的问题之前阅读标记描述。你倾向于在所有问题中不必要地使用[iphone]标签。
controller.name.text = names[theButton.tag];
 controller.blogName = names[tag];
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.name.text = _blogName;
}