2015-10-13 83 views
0

我仍然是新的iOS編程,我試圖實現一個應用程序,顯示信息爲學生參加週末長長的黑客馬拉松。我目前正在製作一張填有贊助商名單的表格,當您點擊一個贊助商Disclosure Button時,我希望它能夠延伸到另一個頁面,該頁面只顯示贊助商名稱和包含他們網站的網頁視圖。試圖從ViewController與贊助商的UITableView Segoveue到另一個ViewController

我以爲我正確地設置了我的prepareForSegue方法,但是當我嘗試在iOS模擬器中進行選擇時沒有任何反應。有人可以看看我的代碼,並告訴我,如果我錯過了什麼嗎?

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 = sender;

0

我看到你已經在故事板從masterViewController到DetailViewController定義推SEGUE。

要執行SEGUE,你將需要實現的UITableView委託方法,特別是tableView:didSelectRowAtIndexPath:

PrepareForSegue是塞格斯的準備,它不執行塞格斯。

但是,當您點擊詳細披露按鈕,它沒有發生,但是當你點擊單元格,如果你按照這個執行。

+0

啊我明白了。謝謝你的澄清 – Talcicio