2014-09-26 65 views
0
func test(button:UIButton){ 

    var alarm = EKAlarm(relativeOffset: 20) 
    var event = EKEvent(eventStore: store) 
    event.title = "xxxx" 
    event.startDate = NSDate(timeIntervalSinceNow: 20) 
    event.endDate = NSDate(timeIntervalSinceNow: 1000) 
    event.calendar = calendarWithName(cal_name) 
    event.alarms = [alarm] 

    var ev = EKEventEditViewController() 
    ev.event = event 
    ev.eventStore = store 
    ev.editViewDelegate = self 
    ev.delegate = self 

    self.presentViewController(ev, animated: true, completion: nil) 
} 

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) { 

    if (viewController.isKindOfClass(UITableViewController.self)){ 

     var tableview = (viewController as UITableViewController).tableView 

     println(tableview.numberOfSections()) 

     for i in 0...tableview.numberOfSections() { 

       println(tableview.cellForRowAtIndexPath(NSIndexPath(forRow: 0, inSection: i)) != nil) 

     } 
    } 
} 

我使用EKEventEditViewDelegate,该willShowViewController FUNC运行良好,我能够得到正确的表格,但我不能得到第5和接下来的部分,什么是错的代码,我该如何解决这个问题。无法获取EKEventEditViewController权细胞

控制台显示:

8 

true 

true 

true 

true 

true 

false 

false 

false 

false 

回答

0

文档说cellForRowAtIndexPath(_:)只返回可见细胞。

如果单元格不是 visible或indexPath超出范围,则表示该表格单元的对象或nil。

https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UITableView_Class/index.html#//apple_ref/occ/instm/UITableView/cellForRowAtIndexPath

+0

那么如何禁用电池,其超出范围 – six 2014-09-26 03:49:29

+0

为了确保细胞是可见的,你可以使用的方法indexPathsForVisibleRows,这样的事情: 让indexPathsForVisibleRows = self.tableView.indexPathsForVisibleRows ()as [NSIndexPath] if find(indexPathsForVisibleRows,indexPath)!= nil {//做你的东西} – chroman 2014-09-26 03:56:16

+0

非常感谢!下次我会更仔细地看到doc! – six 2014-09-26 05:47:38