我有一个看似简单的问题。
我有一个表格视图控制器(2个标签标签栏的一部分),用户点击导航栏中的加号按钮并填写一些信息。这会使用户进入"添加条目"查看控制器。
我有第二个表格视图(标签栏的第二个标签),导航栏中还有一个加号按钮,也可以调用添加条目。但是,使用此表视图,我已经填充了textField,并且datePicker与它来自的信息相关。
在prepareForSegue中,我设置了日期和文本字段。这样可行。但是,我并不完全确定在“添加条目”中将代码放在何处以说“"如果您从标签1中调用,请将所有内容留空,如果您从标签2中调用” ,设置日期选择器"。
在prepareForSegue中:
if ([segue.identifier isEqualToString:@"Create New Entry From Event"])
{
AddEntryViewController *addEntryViewController = (addEntryViewController *)segue.destinationViewController;
[addEntryViewController setSelectedEvent:self.occasion.title];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:sectionTitle];
[addEntryViewController setSelectedDate:dateFromString];
}
setSelectedDate是:
- (void)setSelectedDate:(NSDate *)selectedDate
{
_selectedDate = selectedDate;
}
如果我将viewWillAppear设置为:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.occasionTextField.text = self.selectedEvent;
[self.datePicker setDate:self.selectedDate animated:YES];
}
我从任何其他屏幕调用添加条目时都会崩溃,但这个当然不可取。
因此,当从应用程序中的任何位置调用时,我需要一种方法将所有文本字段和日期选择器保留为空白(在没有self.datePicker行的情况下工作),并且在从特定表视图调用时仅设置datePicker 。
对此的任何想法都会非常棒!
答案 0 :(得分:1)
在接口中定义一个这样的BOOL。
@property (assign, nonatomic) BOOL fromTabOne;
并添加
@synthesize fromTabOne;
在viewWillAppear
中- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (!self.fromTabOne) {
self.occasionTextField.text = self.selectedEvent;
[self.datePicker setDate:self.selectedDate animated:YES];
}
}
在prepareForSegue
中if ([segue.identifier isEqualToString:@"Create New Entry From Event"])
{
AddEntryViewController *addEntryViewController = (addEntryViewController *)segue.destinationViewController;
[addEntryViewController setSelectedEvent:self.occasion.title];
if (viewOne) { //if you're on first tab
[addEntryViewController setFromTabOne:YES];
} else {
[addEntryViewController setFromTabOne:NO];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:sectionTitle];
[addEntryViewController setSelectedDate:dateFromString];
}
}
您在评论中提到的错误可能是由nil NSDate或错误的区域设置引起的。在设置之前进行零检查。我想NSDateFormatter无法格式化你的字符串。