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]
это должно сработать.