IOS, как показать модальное представление по нажатию uimenuitem

Я занимаюсь разработкой приложения, в котором при нажатии на ячейку таблицы отображается UIMenuItem с кнопкой "Информация". Теперь при нажатии на кнопку информации я должен показать вид и отклонить при нажатии кнопки отмены.

В MytableView(Пользовательский tableView)

-(void)tableView : (UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"didSelectRow");


    UIMenuItem *testMenuItem = [[UIMenuItem alloc] initWithTitle:@"Info" action:@selector(handleInfo:)];
    [[UIMenuController sharedMenuController] setMenuItems: @[testMenuItem]];
    [[UIMenuController sharedMenuController] update];
}

- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

-(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
//    if (action == @selector(handleInfo:))
//    {
//        return YES;
//    }
    return NO;
}

- (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
    // required
}
-(IBAction)handleInfo:(id)sender{

    InfoViewController *readInfo = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
    readInfo.label.text = @"Info of table cell";

    [myAppDelegate.navController pushViewController:readInfo animated:NO];
}

Я могу выдвинуть представление, но не могу отклонить его, и значение, переданное readInfo.label.text, возвращает ноль.

1 ответ

1. readInfo.label.text возвращает ноль. Потому что в это время метка в xib все еще не отображается. Чтобы решить эту проблему, можно назначить текст после pushViewController.

но я бы предпочел передать текст в методе initWithNib. может быть создан другой метод initWithNibName:@"xxx" text:@"Информация о ячейке таблицы"; сохраните его в InfoViewController и присвойте ему этот текст в viewDidLoad.

2. какой метод вы вызвали, когда уволить этот InfoViewController??

[myAppDelegate.navController popViewController] 

это должно сработать.

Другие вопросы по тегам