2014-11-18 5 views
-1

Я разрабатываю приложение, где при нажатии на ячейку таблицы я показываю UIMenuItem с кнопкой «Информация». Теперь, щелкнув кнопку info, я должен показать представление и убрать его после нажатия.ios как показать модальный вид при нажатии 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 возвращается нуль.

+0

Я бы рекомендовал установить текст в свойстве вашего InfoViewController, а не напрямую обращаться к 'UILabel' – Paulw11

+0

, как отклонить InfoViewController? – Vidhyanand

+0

вызов 'popViewControllerAnimated:' на вашем навигационном контроллере – Paulw11

ответ

0

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

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

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

[myAppDelegate.navController popViewController] 

Это должно сделать трюк.

+0

я сделал, но не работал – Vidhyanand