2015-06-16 1 views
3

Я хочу, чтобы пользователь нажал строку таблицы, после чего пользователь перейдет на другую страницу. На странице есть идентификатор раскадровки «Другой вид» и идентификатор восстановления «Другой вид». Но я не могу пойти замыслил зренияЦель c - щелкнуть строку таблицы и перейти на другую страницу

Это мой код:

- (UITableViewCell *)tableView:(UITableView *)tabel cellForRowAtIndexPath:(NSIndexPath *)indeksBaris 
{ 

    static NSString *simpleTableIdentifier = @"TampilanCell"; 
    TabelBeritaCell *cell = (TabelBeritaCell *)[tabel dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

    NSLog(@"nilai : %d", indeksBaris.row); 
    //detecting NIB of table view 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableView" owner:self options:nil]; 
    cell = [nib objectAtIndex:0]; 

    //Go To View Controller which have identifier "Other View" 
    UIViewController *otherViewCon; 
    otherViewCon = [self.storyboard instantiateViewControllerWithIdentifier:@"Other View"]; 
    [self.navigationController pushViewController:otherViewCon animated:YES]; 

    cell.judulBerita.text = [listBerita objectAtIndex:indeksBaris.row]; 

    return cell; 
} 

Этот код не работает:

UIViewController *otherViewCon; 
otherViewCon = [self.storyboard instantiateViewControllerWithIdentifier:@"Other View"]; 
[self.navigationController pushViewController:otherViewCon animated:YES]; 

ОБНОВЛЕНО меня вставить новый код. Я использовать метод didSelectRowAtIndexPath, но он не работает:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
     UIViewController *otherViewCon; 
     otherViewCon = [self.storyboard instantiateViewControllerWithIdentifier:@"Other View"]; 
     [self.navigationController pushViewController:otherViewCon animated:YES]; 
    } 
+0

показать код метода didSelectRowAtInedxPath –

+0

Нет, я не использовал этот метод. Я попробую сначала ... –

+1

Почему бы вам не попробовать то, что я написал в своем ответе: '[self performSegueWithIdentifier: @" ShowDetail "sender: tableView];' Вам не нужно создавать новый UIViewController – Jessica

ответ

4

Попробуйте метод didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self performSegueWithIdentifier:@"ShowDetail" sender:tableView]; 
} 

Если вы хотите передать переменную или выполнить действие, прежде чем она перетекает, выполните следующие действия:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"ShowDetail"]) { 
     //Do something 
     Detail *detailController = (Detail*)segue.destinationViewController; 
    } 
} 

Если вы хотите знать, как назвать SEGUE, здесь отличный учебник от яблока документов: Naming Segues

+0

Хорошо, я попробую сначала –

+2

Может ли проголосователю объяснить, пожалуйста? – Jessica

+0

Этот код работает. Причина: «Ошибка NSInvalidArgumentException», причина: «Получатель () не имеет идентификатора« Другой вид » На самом деле, у меня есть идентификатор раскадровки и идентификатор восстановления в представлении с именем« Другой вид » ' –

0

Внесите свой код в didSelectRowAtIndexPath метод. И, пожалуйста, прочитайте документацию перед написанием исследования кода n, прежде чем задавать вопросы здесь.

0

Вы должны написать код навигации в

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

этот метод.

Или вы можете напрямую перейти к другому контроллеру представления, нарисовав push segue в раскадровке. Не нужно писать код.

How to make a push segue when a UITableViewCell is selected

+0

Рисование push segue из настольного вида? Я не могу этого сделать! Я могу рисовать только если элемент является кнопкой. –

+0

Если вы перейдете на ту же страницу после выбора любой строки, вы можете нарисовать push segue из своего стола. –

+0

проверить ответ нажмите на ссылку, надеюсь, что это поможет –

1

Ваш код кажется правильным. просто я чувствую, что проблема в поиске UIStoryboard объекта .replace следующие вещи могут это нормально работать.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
     UIViewController *otherViewCon; 
     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"your_storyboard_name" bundle:nil];// like Main.storyboard for used "Main" 
     otherViewCon = [storyboard instantiateViewControllerWithIdentifier:@"Other View"]; 
     [self.navigationController pushViewController:otherViewCon animated:YES]; 
} 
+0

Я не думаю, что @andika_kurniawan хочет создать новый viewController. Я думаю, проблема в том, что это просто переключение. – Jessica

+0

@Jessica, я не создаю новый viewController. Я просто получаю ссылку на viewController программно, которая уже существует. –

+0

К сожалению. ты прав!! Но почему вы создаете новую раскадровку? – Jessica

0
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

{ 
     NSString * storyboardIdentifier = @"storyboardName";// for example "Main.storyboard" then you have to take only "Main" 
     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardIdentifier bundle: [NSBundle mainBundle]]; 
     UIViewController * UIVC = [storyboard instantiateViewControllerWithIdentifier:@"secondVCStoryboardID"]; 
    [self presentViewController:UIVC animated:YES completion:nil]; 
} 
0

Попробуйте эту его помощью. didSelectRowAtIndexPath

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexpath.row==0)//means you click row 0 
    { 
    UIViewController *otherView=[self.storyboard instantiateViewControllerWithIdentifier:@"otherview"]; 
     [self presentViewController:otherView animated:YES completion:nil]; 
    } 
    else 
    { 
    UIViewController *detailView=[self.storyboard instantiateViewControllerWithIdentifier:@"detailView"]; 
     [self presentViewController:detailView animated:YES completion:nil]; 
    } 
} 
0

здесь showDataVC это мое новое имя файла для второго ViewController. в первом созданном объекте нового файла и инициализируется. и инициализировать showDataVC с объектом для использования объекта в pushviewcontroller.

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    showDataVc *objshowDataVc = [self.storyboard instantiateViewControllerWithIdentifier:@"showDataVc"]; 

    [self.navigationController pushViewController:objshowDataVc animated:YES]; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^