2013-09-23 123 views
0

我是iOS編程的新手,我想做一件簡單的事情。我看到了我的問題幾個主題,但我不明白爲什麼我的代碼不工作...用另一個視圖爲每個UITableViewCell創建一個鏈接

  • 我創建了一個UIViewController子類叫做details2ViewController,用的.xib
  • 在我的主要觀點稱爲ViewController.xib,我有一個的tableView
  • ViewController.m,我加在頂部:#import "details2ViewController.h"
  • ViewController.m,我修改了didSelectRowAtIndexPath方法方法是這樣的:

    details *det = [[details alloc] init]; 
    [self.navigationController pushViewController:det animated:YES]; 
    

沒有警告,但是當我點擊...我精確,以至於我的工作沒有mainStoryBoard細胞沒有影響。

說明:Here是我之前發佈的關於此問題的文章。

(很抱歉,如果我的英語很彆扭,我是法國人......感謝您的幫助!)

+0

您是否將tableview的委託賦給了'ViewController'的文件所有者? – Bhavin

+0

是的,我確實..... –

+0

您的ViewController是否嵌入在導航控制器中? – rdelmar

回答

0

你已經正確連線您的TableView的委託到你的ViewController的文件所有者或不是所有檢查的首先。 TableView的-didSelectRowAtIndexPath方法是委託方法。

其次,我不明白爲什麼當您已經導入details2ViewController.h時,使用details作爲類名稱。因此,它看起來像你應該使用details2ViewController代替details和你的代碼應該是這樣的:

details2ViewController *det = [[details2ViewController alloc] initWithNibName:@"details2ViewController" bundle:nil]; 
[self.navigationController pushViewController:det animated:YES]; 

確保您ViewController確實嵌入UINavigationController。如果不是那麼你的self.navigationController willnil

或者您可以通過An Introduction To UINavigationController

+0

是的,有鏈接。 是的,請忘記_「詳細信息」_,我創建了一個新的,名爲「_details2ViewController」_。 我試過你的代碼,但是當我這樣做時: _details2ViewController * det = [[details2ViewController alloc] initWithNibName:@「details2ViewController」]; _我得到一個警告**'details2ViewController'沒有可見@interface聲明選擇器'initWithNibName '**。 所以我這是否: _details2ViewController * DET = [[details2ViewController頁頭] initWithNibName:@ 「details2ViewController」 捆綁:無]; _沒有報警,但沒有工作 –

+0

@Erzékiel:我已經在我的答案添加了一個鏈接。覈實。它有一個教程一步一步的指導。 – Bhavin

+0

@Erzékiel查看我的回答 –

0

如果您正在使用Storyboard,則可以使用此代碼。

- (void)tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
YourViewController *yourViewController = [storyboard instantiateViewControllerWithIdentifier:@"StoryBoardID"]; 
[self.navigationController pushViewController:yourViewController animated:YES]; 
} 

不要忘記設置animated:BOOLYES在最後一行。

+0

謝謝,但我試圖做到這一點,而不使用Storyboard。 –

+0

好的。沒有問題 –

0

你必須在你的AppDelegate.h首先定義導航控制器的屬性:

@property (strong, nonatomic) UINavigationController *controller; 

然後在AppDelegate.m文件做到這一點的didFinishLaunchingWithOptions:方法中:

details2ViewController *controller=[[details2ViewController alloc] initWithNibName:@"details2ViewController" bundle:nil]; 
    self.controller = [[UINavigationController alloc] initWithRootViewController:controller]; 
} 

self.window.rootViewController=self.controller; 
[self.window makeKeyAndVisible]; 
return YES; 

然後在detailsViewViewController中。m在didSelectRowAtIndexPath中:

details2ViewController *det = [[details2ViewController alloc] initWithNibName:@"details2ViewController" bundle:nil]; 
[self.navigationController pushViewController:det animated:YES]; 

請讓我知道它是否工作.. :)謝謝。

+0

是的,這與我在鏈接到Vin的答案後發現的方法是一樣的。但是,也謝謝你! –

相關問題