В Xcode (iPhone приложение) Я создал ряд кнопок программно, как это:Как передать кнопку тег в prepareForSegue
- (void)viewDidLoad
{
[super viewDidLoad];
// By Road Button
byRoadButton = [UIButton buttonWithType:UIButtonTypeCustom];
byRoadButton.tag = 3;
byRoadButton.frame = CGRectMake(20, 246, 280.f, 40.f);
UIImage *roadButton = [UIImage imageNamed:@"gettingHereByRoadButton.png"];
[byRoadButton setBackgroundImage:roadButton forState:UIControlStateNormal];
[self.view addSubview:byRoadButton];
[byRoadButton addTarget:self action:@selector(byRoadButtonClicked) forControlEvents:UIControlEventTouchUpInside];
}
Затем проверить, какая кнопка нажата в действии: @selector и вызвать performSegueWithIdentifier , NSLog показывает правильный тег кнопки здесь как проверку.
- (void) byRoadButtonClicked
{
NSLog(@"Button Pushed Tag Number: %d", byRoadButton.tag);
[self performSegueWithIdentifier:@"gettingHereSegue" sender:self];
}
Но как передать тег кнопки для подготовкиForSegue? Идея состоит в том, чтобы передать этот тег для подготовкиForSegue и на основе номера тега передать информацию, связанную с этой кнопкой, в следующий ViewController?
Я пробовал:
[self performSegueWithIdentifier:@"gettingHereSegue" sender:byRoadButton.tag];
Но получить ошибку говоря Im пытается передать Int вместо идентификатора.
В моей prepareForSegue я следующее:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// ThIS IS WHAT I WANT TO DO - PSEUDO CODE
//int tagNumber = sender;
//if (tagNumber == 3)
//{
//Set relevant content of Object here
//}
//THIS IS WHAT I CURRENTLY HAVE - NO CHECK FOR TAG
GettingHereContent *gettingHereContent = [[GettingHereContent alloc] init];
gettingHereContent.content = @"This is my custom content based on this buttons click";
GettingHereViewController *vc = (GettingHereViewController *)segue.destinationViewController;
vc.gettingHere = gettingHereContent;
}
Или может кто-нибудь предложить решение или, возможно, лучший способ сделать это, пожалуйста?
Try [собственного performSegueWithIdentifier: @ отправителем "gettingHereSegue": byRoadButton]; а затем в prepareForSegue if (byRoadButton.tagNumber == 3) { // Установить соответствующее содержание объекта здесь } –
Да, это сработало безупречно. И в prepareForSegue все, что мне нужно было сделать, это проверить, была ли кнопка равной отправителю: if (byRoadButton == sender) {// Сделать что-то здесь} Мне не нужно было беспокоиться о номере тега, чтобы проверить на нажатия кнопки , еще раз спасибо – heyred