用于创建新页面的xcode /界面构建器按钮

时间:2012-06-25 05:43:40

标签: objective-c ios xcode

我的一个类中有一个按钮,我使用xcode / interface builder创建它,我想将我的按钮连接到另一个创建基于事件的日历的类,

我想按下我的按钮,但之后它会自动创建另一个页面,在该页面内还有另一个按钮 - >当我按下该按钮时,我可以访问基于事件的日历页面,我的问题是

如何删除第二页

这是生成第二页和第三页的代码

AddEvent.h

#import <UIKit/UIKit.h>
#import <EventKit/EventKit.h>
#import <EventKitUI/EventKitUI.h>


@interface AddEvent : UIViewController <UINavigationBarDelegate, UITableViewDelegate, 
EKEventEditViewDelegate, UINavigationControllerDelegate, UIActionSheetDelegate> {

EKEventViewController *detailViewController;
EKEventStore *eventStore;
EKCalendar *defaultCalendar;
NSMutableArray *eventsList;
}

@property (nonatomic, retain) EKEventStore *eventStore;
@property (nonatomic, retain) EKCalendar *defaultCalendar;
@property (nonatomic, retain) NSMutableArray *eventsList;
@property (nonatomic, retain) EKEventViewController *detailViewController;

- (NSArray *) fetchEventsForToday;



@end

AddEvent.m

#import "AddEvent.h"

 @interface AddEvent ()

@end

@implementation AddEvent

@synthesize eventsList, eventStore, defaultCalendar, detailViewController;



  #pragma mark -
  #pragma mark View lifecycle

 - (void)viewDidLoad {

以下是创建第二个屏幕的代码

self.title = @"Events List";

// Initialize an event store object with the init method. Initilize the array for events.
self.eventStore = [[EKEventStore alloc] init];

self.eventsList = [[NSMutableArray alloc] initWithArray:0];

// Get the default calendar from store.
self.defaultCalendar = [self.eventStore defaultCalendarForNewEvents];

//  Create an Add button 
UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
                              UIBarButtonSystemItemAdd target:self action:@selector(addEvent:)];
 self.navigationItem.rightBarButtonItem = addButtonItem;



self.navigationController.delegate = self;

  // Fetch today's event on selected calendar and put them into the eventsList array
  [self.eventsList addObjectsFromArray:[self fetchEventsForToday]];


  }



 // Allow event editing.
 detailViewController.allowsEditing = YES;

 // Push detailViewController onto the navigation controller stack
 // If the underlying event gets deleted, detailViewController will remove itself from
//  the stack and clear its event property.
  [self.navigationController pushViewController:detailViewController animated:YES];

  }


  #pragma mark -
  #pragma mark Add a new event

  // If event is nil, a new event is created and added to the specified event store. New events are 
  // added to the default calendar. An exception is raised if set to an event that is not in the 
  // specified event store.


  - (void)addEvent:(id)sender {
  // When add button is pushed, create an EKEventEditViewController to display the event.
  EKEventEditViewController *addController = [[EKEventEditViewController alloc] initWithNibName:nil bundle:nil];

  // set the addController's event store to the current event store.
  addController.eventStore = self.eventStore;

  // present EventsAddViewController as a modal view controller
  [self presentModalViewController:addController animated:YES];

  addController.editViewDelegate = self;

   }

我也不知道如何将第一个屏幕上的按钮连接到第三个屏幕并删除第二个屏幕

提前致谢!

1 个答案:

答案 0 :(得分:0)

在你的第一个viewcontrollers的viewDidLoad中为加号按钮添加以下UIBarButtonItem代码

UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
                          UIBarButtonSystemItemAdd target:self action:@selector(addEvent:)];

self.navigationItem.rightBarButtonItem = addButtonItem;

并添加操作代码

- (void)addEvent:(id)sender 
{
// When add button is pushed, create an EKEventEditViewController to display the event.
EKEventEditViewController *addController = [[EKEventEditViewController alloc]initWithNibName:nil bundle:nil];         
// set the addController's event store to the current event store.
addController.eventStore = self.eventStore;

// present EventsAddViewController as a modal view controller
[self presentModalViewController:addController animated:YES];

addController.editViewDelegate = self;

}

然后添加必要的代码以在EKEventEditViewController的viewDidLoad中添加事件。