Comments (1)
hi @atomkirk
I've implemented it now by myself. It's maybe not the best way but is working!
Here's how:
- I needed to set the "elements" accessible in "MYSFormViewController.h" :
@property (nonatomic, strong) NSMutableArray *elements;
- I needed to set the "visible" bool accessible in "MYSFormDatePickerElement.h" and "MYSFormPickerElement.h" (so i removed the 'readonly') :
@property (nonatomic, assign, getter = isVisible) BOOL visible;
- I add a NotificationCenter post in "formDatePickerCellRequestedDatePicker" and "formPickerCellRequestedPicker" of "MYSFormDatePickerElement.m" and "MYSFormPickerElement.m" :
MYSFormDatePickerElement.m
- (void)formDatePickerCellRequestedDatePicker:(MYSFormDatePickerCell *)cell
{
id value = [self.dataSource modelValueForFormElement:self];
self.datePicker.date = value ?: [NSDate date];
[[NSNotificationCenter defaultCenter] postNotificationName:@"pickerTapped" object:self];
if (!self.isVisible) {
self.visible = YES;
[self.delegate formElement:self didRequestPresentationOfChildView:self.datePicker];
}
else {
self.visible = NO;
[self.delegate formElement:self didRequestDismissalOfChildView:self.datePicker];
}
}
MYSFormPickerElement.m
- (void)formPickerCellRequestedPicker:(MYSFormPickerCell *)cell
{
id value = [self.dataSource modelValueForFormElement:self];
[[NSNotificationCenter defaultCenter] postNotificationName:@"pickerTapped" object:self];
NSInteger index = [self.data indexOfObject:value];
if (index != NSNotFound) {
[self.pickerView selectRow:index inComponent:0 animated:YES];
}
if (!self.isVisible) {
self.visible = YES;
[self.delegate formElement:self didRequestPresentationOfChildView:self.pickerView];
}
else {
self.visible = NO;
[self.delegate formElement:self didRequestDismissalOfChildView:self.pickerView];
}
}
- Lastly in my Controller add observer + method (This is SWIFT on my end) :
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.collectionView?.reloadData()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "pickerTapped:", name: "pickerTapped", object: nil)
}
func pickerTapped(picker: AnyObject){
//
//println("pickerTapped")
//println(picker)
//loop through elements and check if it's picker? Then set all other pickers visible to false
for element in self.elements {
//println(element)
if (element.isKindOfClass(MYSFormDatePickerElement))
{
//println("is MYSFormDatePickerElement")
if picker.object as? MYSFormDatePickerElement != nil && picker.object as? MYSFormDatePickerElement != element as? MYSFormDatePickerElement {
//println(" PICKER IS MYSFormDatePickerElement")
//println("is not requested picker")
var newElement = element as MYSFormDatePickerElement
if newElement.visible == true
{
newElement.visible = false
newElement.delegate.formElement(newElement, didRequestDismissalOfChildView: newElement.datePicker)
}
}
}else if (element.isKindOfClass(MYSFormPickerElement))
{
//println("is MYSFormPickerElement")
if picker.object as? MYSFormPickerElement != nil && picker.object as? MYSFormPickerElement != element as? MYSFormPickerElement {
//println(" PICKER IS MYSFormPickerElement")
//println("is not requested picker")
var newElement = element as MYSFormPickerElement
if newElement.visible == true
{
newElement.visible = false
newElement.delegate.formElement(newElement, didRequestDismissalOfChildView: newElement.pickerView)
}
}
}
}
}
This seems to work just fine... Please let me know if you'll implement a better solution...
Thanks so much and best regards,
C
from mysforms.
Related Issues (10)
- "Cannot assign to theme in self" error HOT 2
- Possibility to change "Placeholders" of MYSFormTextFieldElement? HOT 4
- Can't set custom cellClass HOT 3
- Feature request: Conditional cells HOT 4
- Feature request: Conditional sections HOT 1
- Trying to create a dynamic height uitextviewcell HOT 6
- receive Notifications on Form updates? HOT 2
- Having normal pickerelement at the bottom (actionsheet) instead inline ? HOT 4
- Feature request - possibility to change PickerView inline height
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mysforms.