gpt4 book ai didi

ios - iPhone应用程序类 View 问题

转载 作者:行者123 更新时间:2023-11-28 23:14:40 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个包含一些文本字段的 nib 文件( View A)。在日期 textField 前面,我按下了按钮,可以进入日历 View 。我用了代码

-(IBAction)cal:(id)sender
{
CalendarTestViewController *calander1=[[CalendarTestViewController alloc]initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:calander1 animated:NO ];
[calander1 release];
}

很好。它带我进入日历 View ,在日历 View 中我编写了代码,这样当有人点击一个日期时,它会自动移至上一个 View ,即 View A。然后当有人按下 A 中的按钮时,带你确认 View (另一个类)。它刷新文本字段中的所有数据。

我想知道而不是使用

[self.navigationController pushViewController:calander1 animated:NO ];

是否有任何其他方法可以实现此行为。我想保存我的数据以供确认查看。

这是我的日历 View 点击磁贴方法。

- (void)calendarView:(KLCalendarView *)calendarView tappedTile:(KLTile *)aTile
{
// NSLog(@"Date Selected is %@",[aTile date]);

if (cat==nil) {
cat=[[FormController alloc]initWithNibName:nil bundle:nil];
NSString *st=[[NSString alloc] initWithFormat:@"%@",[aTile date]];
cat.mas=st;

[self.navigationController pushViewController:cat animated:YES];
[cat release];

[self dismissModalViewControllerAnimated:YES];

}
}

从日历中按任何时间后我想在文本字段上填写日期 n 返回到上一个 View 我不想将此日历 View 放在导航堆栈中。


经过一些更改:下面是我的 CalendarTestViewController.m 文件的点击磁贴方法。

- (void)calendarView:(KLCalendarView *)calendarView tappedTile:(KLTile *)aTile
{
// NSLog(@"Date Selected is %@",[aTile date]);

if (cat==nil) {
cat=[[FormController alloc]initWithNibName:nil bundle:nil];
NSString *st=[[NSString alloc] initWithFormat:@"%@",[aTile date]];
cat.mas=st;

//[self.navigationController pushViewController:cat animated:YES];
//[cat release];

[self dismissModalViewControllerAnimated:YES];
}
}

FormController.m

- (void)calendarDidSelectDate:(NSDate *)selectedDate
{
cali.text=mas;
// set the selectedDate wherever it needs to be...
}


-(IBAction)cal:(id)sender
{
CalendarTestViewController *calendar1=[[CalendarTestViewController alloc]initWithNibName:nil bundle:nil];

calendar1.delegate = self;

[self.navigationController presentModalViewController:calendar1 animated:YES];

}

我所做的与建议的方式完全相同,协议(protocol)和委托(delegate)的定义方式相同。未显示错误,但未选择日期且未填写 formController 中的 label.text

最佳答案

[self.navigationController presentModalViewController:calander1 animated:YES];

默认情况下,这会从底部显示您的日历 View 。如果你想让它交叉淡入淡出,你可以设置:

calendar1.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

或者你可以通过设置让它翻转:

calendar1.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

顺便说一句,您需要在呈现 View Controller 之前调用此 setter 。此外,以模态方式呈现此日历 View Controller 意味着您必须以模态方式关闭它,而不是从 navigationController 中弹出它。

[self dismissModalViewControllerAnimated:YES];

编辑

要将选定的日期返回给您的 FormController,您需要在 CalendarTestViewController.h 中声明一个委托(delegate)协议(protocol)

@protocol CalendarTestViewControllerDelegate

- (void)calendarDidSelectDate:(NSDate *)selectedDate;

@end

这告诉您的编译器委托(delegate)必须实现名为 calendarDidSelectDate 的方法:

然后你需要给你的 CalendarTestViewController 一个委托(delegate)属性,也在 .h 中,就在最后一个 @end 之前

@property (nonatomic, assign) id<CalendarTestViewControllerDelegate> delegate;

这意味着您拥有符合您在上面声明的 CalendarTestViewControllerDelegate 协议(protocol)的任何类(即 id 代表的属性)的属性,并且该属性称为委托(delegate)。在您的 CalendarTestViewController.m 文件中,您必须在 @impelementation 行下放置:

@synthetize delegate;

现在在您的 FormController.h 中的 @interface FormController : UITableViewController 行你需要添加 <CalendarTestViewControllerDelegate>它告诉编译器这个类将符合该协议(protocol)。现在剩下要做的就是在你的 -(IBAction)cal:(id)sender 中方法添加 calendar1.delegate = self;并在 FormController.m 中的某处实现委托(delegate)方法

- (void)calendarDidSelectDate:(NSDate *)selectedDate
{
// set the selectedDate wherever it needs to be...
}

编辑2

你需要替换:

- (void)calendarView:(KLCalendarView *)calendarView tappedTile:(KLTile *)aTile{
// NSLog(@"Date Selected is %@",[aTile date]);

if (cat==nil) {
cat=[[FormController alloc]initWithNibName:nil bundle:nil];
NSString *st=[[NSString alloc] initWithFormat:@"%@",[aTile date]];
cat.mas=st;

// [self.navigationController pushViewController:cat animated:YES];
//[cat release];

[self dismissModalViewControllerAnimated:YES];

}

用类似的东西:

- (void)calendarView:(KLCalendarView *)calendarView tappedTile:(KLTile *)aTile
{
[self.delegate calendarDidSelectDate:[aTile date]];
[self dismissModalViewControllerAnimated:YES];
}

和:

- (void)calendarDidSelectDate:(NSDate *)selectedDate
{
cali.text=mas;
// set the selectedDate wherever it needs to be...
}

与:

- (void)calendarDidSelectDate:(NSDate *)selectedDate
{
cali.text = [NSString stringWithFormat:@"%@", selectedDate];
}

关于ios - iPhone应用程序类 View 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com