2014-09-24 3 views
3

У меня есть popover, когда я нажимаю на UIButton. Эта кнопка находится в статическом UITableViewCell. Когда я нажимаю на кнопку, popover не там, где я бы подумал, что это нужно, под UIButton.Показать панель для UIButton в статическом UITableViewCell

Поскольку это статическая ячейка, я не использую didSelectRowAtIndexPath, и мне не нужно использовать cellForRowAtIndexPath. Я в основном использую UITableView как дешевую альтернативу встраиванию прокрутки в свой контроллер. Это существенно для ввода данных. У меня есть 4 раздела, и каждый раздел имеет 1 строку. Я считаю, что мне нужно, чтобы выяснить, как получить NSIndexPath из ряда в каждой секции, чтобы перейти к .sourceView что-то похожее на это в Objective-C

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
[self.profileItemsDetailPopover presentPopoverFromRect:cell.bounds inView:cell.contentView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 


@IBAction func dateOfBirthAction(sender: AnyObject){ 

    var popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("DateOfBirthViewController") as UIViewController 
    popoverViewController.modalPresentationStyle = .Popover 
    popoverViewController.preferredContentSize = CGSizeMake(300, 300) 

    let popoverPresentationViewController = popoverViewController.popoverPresentationController 

    popoverPresentationViewController?.permittedArrowDirections = .Any 
    popoverPresentationViewController?.delegate = self 
    popoverPresentationViewController?.sourceView = tableView 
    popoverPresentationViewController?.sourceRect = playerInformationBirthDateButton.frame 

    presentViewController(popoverViewController, animated: true, completion: nil) 
} 

Решение:

@IBAction func dateOfBirthAction(sender: UIButton){ 

    var cell = sender.superview!.superview! as UITableViewCell 

    var popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("DateOfBirthViewController") as UIViewController 
    popoverViewController.modalPresentationStyle = .Popover 
    popoverViewController.preferredContentSize = CGSizeMake(300, 300) 

    let popoverPresentationViewController = popoverViewController.popoverPresentationController 

    popoverPresentationViewController?.permittedArrowDirections = .Any 
    popoverPresentationViewController?.delegate = self 
    popoverPresentationViewController?.sourceView = cell.contentView 
    popoverPresentationViewController?.sourceRect = playerInformationBirthDateButton.frame 

    presentViewController(popoverViewController, animated: true, completion: nil) 
} 
+0

спасибо .. это работает для меня также ... Как я могу указать указатель на точную ячейку? –

ответ

2

вы также можете узнать «Ячейку», когда вы нажимаете на кнопку.

var cell = sender.superview!.superview! as UITableViewCell 
// or the table 
var table: UITableView = cell.superview as UITableView 
// or the Indexpath 
let indexPath = table.indexPathForCell(cell) 
+0

Мне пришлось немного подправить ваше решение, но оно работает. Будет редактировать и добавлять решение. Благодаря!! –

Смежные вопросы