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
设置控件(标签)属性,而是要将aNSString
传递给这个新的页面视图实例
执行此步骤后,在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;
}