2017-02-21 2 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 Простое решение состоит в том, чтобы добавить кнопку цели в ViewController в «cellForRowAtIndexPath» в UItabelViewCell. Вы можете найти решение в этом посте http://stackoverflow.com/questions/15652133/how-to-set-action-for-uibutton-in-uitableviewcell –

+0

@Sandeep Kumar ответ, с которым вы связались, есть где есть в ячейке таблицы. У op нет кнопки в своей ячейке – Gruntcakes

+0

«Я хочу открыть другой контроллер из другого раскадровки». Это правильно? Вы только устарели от iOS сегодня, но у вас уже есть более одного раскадровки в вашем проекте. Кажется, слишком рано для первого дня – Gruntcakes

ответ

0

На самом деле вы используете TableView в вашем 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 

Ваш контроллер с TableView

@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

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