2011-10-13 16 views
5

के लिए पृष्ठभूमि रंग/छवि सेट करें कैलेंडर ईवेंट जोड़ने के लिए मेरा कोड निम्न है। मैं EKEventEditViewController के लिए पृष्ठभूमि छवि भेजना चाहता हूं। मैं इस कोड मैं EKEventViewController लेकिन EKEventEditViewController के लिए अपने काम नहीं कर के लिए पृष्ठभूमि छवि सेट करने में सक्षम था का उपयोग करते हुए इस कोडEKEventEditViewController

UITableView *eventTableView = [[editController.view subviews]objectAtIndex:0]; 

पाया। कोई भी मदद बहुत ही सराहनीय होगी। अग्रिम में धन्यवाद।

 EKEventEditViewController *editController = [[EKEventEditViewController alloc] init]; 
// UITableView *eventTableView = [[editController.view subviews]objectAtIndex:0]; 
// [eventTableView setHidden:YES]; 

// [eventTableView setBackgroundColor:[UIColor redColor]]; 
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: editController.viewControllers]; 
NSLog(@"%i", [allViewControllers count]); 
UITableView *eventTableView = [[[allViewControllers objectAtIndex:0] subviews] objectAtIndex:0]; 
// UITableView *eventTableView = [[editController.view subviews]objectAtIndex:0]; 
// eventTableView.backgroundColor = [UIColor redColor]; 
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"honeycomb.png"]]; 
eventTableView.backgroundColor = background; 
// [background release]; 
editController.event = [eventsList objectAtIndex:indexPath.row]; 
editController.eventStore = self.eventStore; 
editController.editViewDelegate = self; 
itsSelectedReminder = indexPath.row; 
isReminderDeleted = TRUE; 
[editController.navigationBar setTintColor:[UIColor colorWithRed:67/255.0 green:114/255.0 blue:18/255.0 alpha:1]]; 
[self presentModalViewController:editController animated:YES]; 

[editController release]; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

उत्तर

12

इसने मुझे थोड़ी देर के लिए पागल कर दिया, लेकिन आखिर में मैंने इसे समझ लिया।

चाल किसी भी तरह EKEventEditViewController अंदर तालिका दृश्य तक पहुँच प्राप्त करने के लिए है, और वहाँ केवल एक (दस्तावेज) तरीका है कि ऐसा करने के लिए हो रहा है:

पहले, पेश दृश्य नियंत्रक EKEventEditViewController सेट (या जो भी आप अनुकूलन के लिए जिम्मेदार) एक UINavigationControllerDelegate के रूप में होना चाहता हूँ:

EKEventEditViewController *eventEditViewController = [[EKEventEditViewController alloc] init]; 
eventEditViewController.delegate = yourViewController; // Probably self 
0:

@interface YourViewController : UIViewController <UINavigationControllerDelegate> 

दूसरा, EKEventEditViewController के प्रतिनिधि होने के लिए आपके विचार नियंत्रक सेट

तीसरा, प्रतिनिधि में निम्न विधि को लागू:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    if ([viewController isKindOfClass:[UITableViewController class]]) { 
     ((UITableViewController *)viewController).tableView.backgroundColor = [UIColor blueColor]; 
     ((UITableViewController *)viewController).tableView.backgroundView = nil; 
    } 
} 

यह उदाहरण नीले रंग के EKEventEditViewController की तालिका दृश्य पृष्ठभूमि है, लेकिन अब है कि आप वास्तविक नेविगेशन नियंत्रक और तालिका दृश्य के अंदर की पहुंच है बदल जाएगा तुम जो चाहो कर सकते हो!

नोट: मैंने अभी तक यह कोड ऐप्पल को सबमिट नहीं किया है, लेकिन मैं कुछ भी अनियंत्रित नहीं कर रहा हूं, इसलिए मुझे नहीं लगता कि कोई समस्या क्यों होगी।

का आनंद लें!

+0

बहुत बहुत धन्यवाद .. मैं इसे आज़माउंगा और आपको बता दूंगा .. –

+1

धन्यवाद बहुत अच्छा काम कर रहा है .. अगर मैं अभी भी शीर्षक/स्थान पर क्लिक करता हूं तो मैं पुरानी डिफ़ॉल्ट स्क्रीन देखता हूं। क्या आप उस पृष्ठभूमि को बदलने में मेरी मदद कर सकते हैं .. –