2017-02-21 12 views
0

私は今日のIOSから作業を開始し、マイナーな変更を加えて既存のプロジェクトに取り掛かりました。インターフェイスビルダーを介して私はボタンを追加することができました。今、そのボタンがタップされたら、別のストーリーボードから別のコントローラーを開きたいと思う。IOS - ボタンをタップしたときに別のコントローラを開く

これは私のhomecell.m

#import "HomeTableViewCell.h" 
#import "HostListingsViewController.h" 

@implementation HomeTableViewCell 

- (void)awakeFromNib { 
    // Initialization code 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
} 

- (IBAction)sharetapped:(id)sender { 
// here i want to be redirected to another controller 
} 
@end 

である、これは私がグーグルで検索し、理解することができませんでした私のhomecell.h

#import <UIKit/UIKit.h> 

@interface HomeTableViewCell : UITableViewCell 
@property (weak, nonatomic) IBOutlet UIImageView *imageViewHome; 
@property (weak, nonatomic) IBOutlet UILabel *labelHeading; 
@property (weak, nonatomic) IBOutlet UILabel *labelSubHeading; 

- (IBAction)sharetapped:(id)sender; 
@end 

です。私はここであなたの助けを求めています。私はxcode8を使用しています。

+0

Th簡単な解決策は、UItabelViewCellの "cellForRowAtIndexPath" instreadのViewControllerにボタンターゲットを追加することです。あなたはこの記事で解決策を見つけることができます。http://stackoverflow.com/questions/15652133/how-to-set-action-for-uibutton-in-uitableviewcell –

+0

@Sandeep Kumarあなたがリンクしている答えは、ボタンを押します。オペラにはセルにボタンがありません – Gruntcakes

+0

"別のストーリーボードから別のコントローラを開きたい"これが正しいですか?あなたは今日iOSを見ていたにもかかわらず、あなたのプロジェクトにはすでに複数のストーリーボードがあります。最初の日に少し前進しているようです。 – Gruntcakes

答えて

0

実際にあなたは、このようなボタンのタップ動作を設定する必要があなたのproject.soでテーブルビューを使用している:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [cell.buttonname addTarget:self 
         action:@selector(navigate:) forControlEvents:UIControlEventTouchDown]; 
} 

-void(navigate) 
{ 

     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainFlow" bundle: nil]; 
     yourViewController *abcd = [storyboard instantiateViewControllerWithIdentifier:@"yourstoryboard id"]; 

     [self.navigationController pushViewController:outCome animated:YES]; 

} 

このコードは、他の画面であなたをナビゲートします。

0

あなたはボタンが押されたセルをチェックして、テーブルビュー

で別のコントローラに

homecell.h

#import <UIKit/UIKit.h> 

@protocol HomeCellDelegate 

- (void)showDataFromCell:(HomeTableViewCell *)cell; 

@end 

@interface HomeTableViewCell : UITableViewCell 

@property (weak, nonatomic) id <HomeCellDelegate> delegate; 

@property (weak, nonatomic) IBOutlet UIImageView *imageViewHome; 
@property (weak, nonatomic) IBOutlet UILabel *labelHeading; 
@property (weak, nonatomic) IBOutlet UILabel *labelSubHeading; 

- (IBAction)sharetapped:(id)sender; 

@end 

homecell.m

#import "HomeTableViewCell.h" 
#import "HostListingsViewController.h" 

@implementation HomeTableViewCell 

- (void)awakeFromNib { 
    // Initialization code 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
} 

- (IBAction)sharetapped:(id)sender { 
    [self.delegate showDataFromCell:self]; 
} 

@end 

あなたのコントローラをいくつかのデータを送信する必要がある場合

@interface YourViewController() <HomeCellDelegate> 

... 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
...  
HomeTableViewCell *homeCell = [tableView dequeueReusableCellWithIdentifier:@"homeCell" forIndexPath:indexPath]; 

homeCell.delegate = self; 
... 

- (void)showDataFromCell:(HomeTableViewCell *)cell { 
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 
... 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"yourAnotherStoryboard" bundle: nil];   
yourViewController *presentController = [storyboard instantiateViewControllerWithIdentifier:@"yourViewController"]; 
presentController.someDataFromCell = someDataArray[indexPath.row]; 
      [self presentViewController:presentController 
           animated:NO 
          completion:nil]; 
} 
+0

- (void)showDataFromCell:(HomeTableViewCell *)cell;この行については、 "期待されるタイプ"のエラーが発生しています! –

+0

あなたのための簡単なプロジェクトを追加:https://github.com/OMGHaveFun/test4 – OMGHaveFun

関連する問題