2015-10-13 5 views
0

Я все еще новичок в программировании на iOS, и я пытаюсь реализовать приложение, которое отображает информацию для студентов, посещающих выходные hackathon в выходные дни. В настоящее время я работаю над таблицей, заполненной списком спонсоров, и когда вы нажимаете одну кнопку Disclosure для спонсоров, я хочу, чтобы она перешла на другую страницу, которая просто отображает имя спонсора и веб-представление, содержащее их веб-сайт.Пытаюсь выйти из ViewController с UITableView спонсоров в другой ViewController

Я думал, что настроил метод prepareForSegue соответствующим образом, но ничего не происходит, когда я пытаюсь сделать выбор в своем iOS Simulator. Может кто-то взглянуть на мой код и сказать мне, если я что-то упустил?

StoryBoard Screenshot iOS Simulator Screenshot

SponsorMasterViewController .h файл начинается здесь

#import <UIKit/UIKit.h> 
#import "SponsorDetailViewController.h" 


@interface SponsorMasterViewController : UITableViewController <UITableViewDataSource, 
    UITableViewDelegate> 

@property (strong, nonatomic) IBOutlet UITableView *tableOfSponsers; 

@end 

SponsorMasterViewController файл .m начинается здесь

#import "SponsorMasterViewController.h" 

@interface SponsorMasterViewController() 

@end 

@implementation SponsorMasterViewController { 

    NSArray *allSponsors; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    Sponsor *sponUber = [[Sponsor alloc] init]; 
    sponUber.name = @"Über Operations LLC"; 
    sponUber.url = @"https://www.uberops.com"; 

    Sponsor *sponStar = [[Sponsor alloc] init]; 
    sponStar.name = @"Starbucks"; 
    sponStar.url = @"http://www.starbucks.com"; 

    Sponsor *sponRen = [[Sponsor alloc] init]; 
    sponRen.name = @"Renegade Runner"; 
    sponRen.url = @"https://fsudelivery.com"; 

    Sponsor *sponOEI = [[Sponsor alloc] init]; 
    sponOEI.name = @"Office of Entrepreneurship"; 
    sponOEI.url = @"http://sga.fsu.edu/oei.shtml"; 

    Sponsor *sponJim = [[Sponsor alloc] init]; 
    sponJim.name = @"The Jim Morgan Institute for Global Entrepreneurship"; 
    sponJim.url = @"http://business.fsu.edu/jmi"; 

    Sponsor *sponMail = [[Sponsor alloc] init]; 
    sponMail.name = @"MailChimp"; 
    sponMail.url = @"http://mailchimp.com"; 

    Sponsor *sponGen = [[Sponsor alloc] init]; 
    sponGen.name = @"Genivia"; 
    sponGen.url = @"http://www.genivia.com"; 

    Sponsor *sponFL = [[Sponsor alloc] init]; 
    sponFL.name = @"FLorida IT Career"; 
    sponFL.url = @"https://fitc.cci.fsu.edu"; 

    Sponsor *sponDOMI = [[Sponsor alloc] init]; 
    sponDOMI.name = @"domiventures"; 
    sponDOMI.url = @"http://www.domistation.com"; 

    Sponsor *sponCode = [[Sponsor alloc] init]; 
    sponCode.name = @"Code School"; 
    sponCode.url = @"https://www.codeschool.com"; 

    Sponsor *sponIonic = [[Sponsor alloc] init]; 
    sponIonic.name = @"Ionic Security"; 
    sponIonic.url = @"https://www.ionic.com"; 

    allSponsors = [NSArray arrayWithObjects:sponUber, sponStar, sponRen, sponOEI, 
        sponJim, sponMail, sponGen, sponFL, sponDOMI, sponCode, 
        sponIonic, nil]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

#pragma mark - TableView Functions 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    //Determine number of sections in my table 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    return [allSponsors count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *simpleTableIdentifier = @"SponserCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
    } 

    Sponsor *company = [allSponsors objectAtIndex:indexPath.row]; 
    cell.textLabel.text = company.name; 
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 

    return cell; 
} 

#pragma mark - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if ([segue.identifier isEqualToString:@"sponsorSegue"]) { 

     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

     SponsorDetailViewController *sponsorDetailController = (SponsorDetailViewController *)segue.destinationViewController; 


     sponsorDetailController.spon = [allSponsors objectAtIndex:indexPath.row]; 
    } 

    // Get the new view controller using [segue destinationViewController]. 
    // Pass the selected object to the new view controller. 
} 
@end 

SponsorDetailViewController .h файл начинается здесь

#import <UIKit/UIKit.h> 
#import "Sponsor.h" 

@interface SponsorDetailViewController : UIViewController 

@property (nonatomic, strong) IBOutlet UILabel *sponsorName; 
@property (nonatomic, strong) IBOutlet UIWebView *webView; 

@property (nonatomic, strong) Sponsor *spon; 

@end 

SponsorDetailViewController .m файл начинается здесь

#import "SponsorDetailViewController.h" 

@interface SponsorDetailViewController() 

@end 

@implementation SponsorDetailViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    //Set the Sponse Label 
    [self.sponsorName setText:self.spon.name]; 

    //Process sponsor url 
    NSURL *sponsorURL = [NSURL URLWithString:self.spon.url]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:sponsorURL]; 

    //fit contents of website inside my webview 
    self.webView.scalesPageToFit = YES; 
    [self.webView loadRequest:request]; 

} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

ответ

0

Вы должны осуществлять

- (Недействительными) Tableview: (UITableView *) Tableview accessoryButtonTappedForRowWithIndexPath: (NSIndexPath *) indexPath

с чем-то вроде

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath 
{ 
    [self performSegueWithIdentifier:@"sponsorSegue" sender:[self.allSponsors objectAtIndexPath: indexPath]]; 
} 

Затем измените подготовиться к Segue к sponsorDetailController.spon = отправитель;

0

Я вижу, что у вас уже есть толчок SEGUE, определенный в раскадровку из masterViewController в DetailViewController.

Чтобы выполнить переход, вам нужно будет применять методы делегата UITableView, в частности tableView:didSelectRowAtIndexPath:

PrepareForSegue подготовка к перетекает, это не выполняя перетекает.

Однако этого не происходит, когда вы нажимаете кнопку раскрытия информации, но когда вы нажимаете на ячейку, если вы выполняете эту реализацию.

+0

А я вижу. Спасибо за разъяснение – Talcicio

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