2017-06-08 14 views
-2

私はファイルを持っています。各セルには、名前、連絡先などのデータの要約があります。ここでセルに触れると、そのセルのデータの詳細がある別のViewControllerに移動します。このViewControllerが何を示すかは関係ありません)。このxibファイルのセルタッチから別のViewControllerに行きたいです。どうやってやるの。Xib to ViewController

編集:

CallHistoryTableViewCell.h

@interface CallHistoryTableViewCell : UITableViewCell 
    @property(nonatomic, strong) IBOutlet UILabel *contactName; 
    @property(nonatomic, strong) IBOutlet UILabel *contactNumber; 
@end 

このクラスはCallHistoryTableViewCell.xibファイルを持っています。

CallHistoryVC.h

@interface CallHistoryVC : UIViewController 
@end 

CallHistoryVC.m

#import "CallHistoryVC.h" 
#import "CallHistoryTableViewCell.h" 

@interface CallHistoryVC()<UITableViewDelegate, UITableViewDataSource,CallingViewControllerDelegate> { 
AppDelegate *appDelegate; 

} 
@property (nonatomic, strong) NSMutableArray<RecentCall> *sortedEventArray; 
@property (weak, nonatomic) IBOutlet UITableView *tView; 

- (void)viewDidLoad { 
[super viewDidLoad]; 
appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 
//---add one contact---// 
[self defaultViewSetting]; 
_tView.delegate = self; 
_tView.dataSource = self; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
return 1; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
return 75; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
return _sortedEventArray.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *CellIdentifier = @"CallHistoryTableViewCell"; 

return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
DetailsOfHistory *storyViewController = [mainStoryBoard instantiateViewControllerWithIdentifier:@"DetailsOfHistory"]; 
//[self presentViewController:storyViewController animated:YES completion:nil]; // present it 
[self.navigationController pushViewController:storyViewController animated:YES];// or push it 

NSLog(@"%ld",(long)indexPath.row); 
} 

すべてが正常に動作しますが、didSelectRowAtIndexPathにindexPathはそれが機能していないタッチを意味表示されていません。私はstroyboardで別のviewcontrollerに行きたいセルをクリックしてください。

+1

あなたはUITableViewのドキュメントを読んだことがありますか? https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614877-tableview?preferredLanguage=occ –

+0

UITableViewDelegateのdidSelectRowAtIndexPathメソッドを実装してください – meim

+0

問題はそこにあるのですが、xibをViewControllerにリンクできませんでした。ストーリーボードのViewControllerにxibをリンクすることは可能ですか? – sazid008

答えて

2

あなたのXIBファイルからテーブルビューセルに CallHistoryTableViewCellとしてセルID名を設定し ​​

以下のようdidSelectRowAtIndexPathを実装します。 今のあなたのviewDidLoad登録して、カスタムのtableView細胞

[self.tableView registerNib:@"CallHistoryTableViewCell" forCellReuseIdentifier:@"CallHistoryTableViewCell"]; 

、あなたはXIBでのviewDidLoadで次の操作を行うようにカスタムセルを登録したい場合は、あなたのcellForRowAtIndexPath

CallHistoryTableViewCell *cell = (CallHistoryTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"CallHistoryTableViewCell"]; 
return cell; 
+0

xibからviewcontrollerに移動するために、そのviewcontrollerを作成するためにストーリーボードを使用できますか?私は明確ではありません – sazid008

+0

実際にxibにあるTableViewCellをクリックすると動作しません。つまり、indexPathを印刷すると 'didSelectRowAtIndexPath'という意味になります。 – sazid008

+0

私はスワイプジェスチャーを使用していますが、それはなぜ機能していません – sazid008

0

に次のコードを配置

[self.tableView registerNib:@"YourNibName" forCellReuseIdentifier:@"YourCellId"]; 

yourXibname:

enter image description here

YourCellid:ところで

enter image description here

、あなたのcellForRowAtIndexPathでこのように行います。

yourCustomCell *cell = (yourCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"yourCellId"]; 
関連する問題