2012-08-11 16 views
12

मेरे पास एक कस्टम UITableViewCell है, जिसे EventCell कहा जाता है।कस्टम UITableViewCell को कॉल नहीं कर रहा है ForSegue

EventCell.h

#import <UIKit/UIKit.h> 

@interface EventCell : UITableViewCell 

@property (nonatomic, strong) IBOutlet UILabel *titleLabel; 
@property (nonatomic, strong) IBOutlet UILabel *locationLabel; 
@property (nonatomic, strong) IBOutlet UILabel *dateLabel; 
@property (nonatomic, strong) IBOutlet UILabel *typeLabel; 
@end 

EventCell.m

#import "EventCell.h" 

@implementation EventCell 

@synthesize titleLabel, locationLabel, dateLabel, typeLabel; 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

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

    // Configure the view for the selected state 
} 

@end 

यहाँ कैसे मैं अपने सेल की स्थापना कर रहा हूँ है।

EventsMasterViewController.m

- (EventCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    Event *myEvent; 
    NSString *CellIdentifier = @"EventCell"; 
    EventCell *cell = (EventCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EventCell" owner:nil options:nil]; 

    for (id currentObject in topLevelObjects) 
    { 
     if ([currentObject isKindOfClass:[EventCell class]]) 
     { 
      cell = (EventCell *)currentObject; 
      break; 
     } 
    } 

    myEvent = [self.myEventsDataController objectInListAtIndex:indexPath.row]; 

    cell.titleLabel.text = myEvent.name; 
    cell.locationLabel.text = myEvent.location; 
    cell.typeLabel.text = @"Social"; 
    cell.layer.borderColor = [UIColor blackColor].CGColor; 
    cell.layer.borderWidth = 1.0; 

    return cell; 
} 

सेल महान स्वरूपित किया जा रहा है, यह बिल्कुल के रूप में मैं इसे करने की जरूरत है लग रहा है। लेकिन जब मैं उस पर क्लिक करता हूं, तो सेल नीला रंग को हाइलाइट करता है और अगले दृश्य में नहीं आता है। मैंने अपनी तैयारी में एक ब्रेकपॉइंट लगाया है फोरसेग्यू विधि और इसे भी बुलाया नहीं जा रहा है।

क्या तैयार करने के लिए कुछ तरीका मैन्युअल रूप सेForSegue है? यदि हां, तो मुझे यह कहां करना चाहिए।

+0

आपके 'टेबल व्यू के बारे में क्या: didSelectRowAtIndexPath: '? – Desdenova

+0

मेरे पास एक विधि नहीं है, क्या मुझे इसे लागू करने की आवश्यकता होगी? – ardavis

+0

जो मैं पढ़ रहा हूं, क्या हम 'readySorlectRowAtIndexPath' के बदले 'readyForSegue' का उपयोग नहीं करते हैं? – ardavis

उत्तर

25

आप को लागू करने के

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 



[self performSegueWithIdentifier:@"YourSegueIdentifier" sender:nil]; 


} 
+1

नोट करें कि दोनों ने चयन किया है IelectRowAtIndexPath: और readyForSegue: UIViewController के तरीके हैं और UITableViewCell – Brabbeldas

1

जैसा कि ऊपर कहा, आप didSelectRowAtIndexPath उपयोग करने के लिए जब तक आप एक नया UIViewController करने के लिए अपने स्टोरीबोर्ड में एक segue कॉन्फ़िगर की जरूरत की जरूरत है। यह आपको performSegueWithIdentifier के प्रोग्रामेटिक कॉल के बजाय prepareForSegue फ़ंक्शन का उपयोग करने की अनुमति देता है।

आशा है कि इसे साफ़ करने में मदद मिलेगी!

+0

नहीं, मुझे नहीं लगता कि 'didSelectRowAtIndex' एक फ़ंक्शन है। यदि गलत है तो कृपया अपना उत्तर जांचें और फ़ंक्शन का नाम सही करें। – Donovan

+0

ऐसा लगता है कि मैं अंत में पथ से चूक गया। धन्यवाद! – heckman

1

मेरी समस्या सेल पहचानकर्ता थी।

तो, - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath में मैं static NSString *cellIdentifier = @"cell"; घोषित कर दिया और उसके बाद स्टोरीबोर्ड में मैं यहाँ में इस पहचानकर्ता कहा:

enter image description here

और यहाँ तुम जाओ! एक सेल से दूसरे दृश्य नियंत्रक को नियंत्रण-खींचकर एक segue कि जब सेल दोहन काम करता है बनाना चाहिए -

4

आप इस के लिए didSelectRow लागू करने के लिए काम करने के लिए नहीं होना चाहिए।

मेरे मामले में, समस्या यह थी कि स्टोरीबोर्ड संपादक गलत तरीके से segue बना रहा था। (दाएं स्टोरीबोर्ड फ़ाइल पर क्लिक करें और चुनें ओपन के रूप में ->स्रोत कोड) मैं दो बहुत ही इसी तरह की स्टोरीबोर्ड था, एक काम किया है और अन्य नहीं किया था, और स्रोत कोड देख, मैं इस देखा:

<segue destination="UWX-rF-KOc" kind="replace" identifier="showStory" trigger="accessoryAction" splitViewControllerTargetIndex="1" id="Gly-La-KIe"/> 

trigger विशेषता पर ध्यान दें। यह मुझे बताता है कि सेल की सहायक कार्रवाई से सीगू निकाल दिया जाएगा।तुम भी सेल के कनेक्शन निरीक्षक से इस देख सकते हैं: यह निकाला जा रहा है और "चयन" से खींचकर segue जगह

enter image description here

नियंत्रण-घसीट सेल से के बजाय ऊपर संभाल मुझे सही segue दिया ।

मुझे यकीन नहीं है कि यह इस विशेष सेल के बारे में क्या है जो चयन-ड्रैगिंग चयन कार्रवाई के बजाय सहायक कार्रवाई से कनेक्ट करता है, लेकिन वहां आप जाते हैं।

+0

सुझाव के लिए धन्यवाद, मुझे एक ही समस्या थी !! :) – Pangu

संबंधित मुद्दे