基于从特定表视图中进行的操作,执行特定操作(如设置UIDatePicker的日期)

时间:2014-03-12 07:26:00

标签: ios iphone segue uidatepicker

我有一个看似简单的问题。

我有一个表格视图控制器(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 。

对此的任何想法都会非常棒!

1 个答案:

答案 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无法格式化你的字符串。