2016-02-16 5 views
0

Я изучаю быстро в течение последних нескольких дней, и я столкнулся с ошибкой, которую я застрял довольно долго.Имея проблему, захватывая индекс выбранной таблицы просмотра в swift

Я пытаюсь получить выбранную indexPath, чтобы затем я мог передавать данные в соответствии с выбранным им элементом. Я просматривал и пробовал много разных решений, которые я нашел при переполнении стека, а также на разных веб-сайтах, но я не могу это понять.

код ниже:

@IBOutlet var selectGroceryTable: UITableView! 

/* Get size of table */ 
func tableView(tableView: UITableView, numberOfRowsInSection: Int) ->Int 
{ 
    return grocery.count; 
} 
/* Fill the rows with data */ 
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    let myCell:UITableViewCell = selectGroceryTable.dequeueReusableCellWithIdentifier("groceryListRow", forIndexPath:indexPath) as! UITableViewCell 
    myCell.textLabel?.text = grocery[indexPath.row]; 
    myCell.imageView?.image = UIImage(named: groceryImage[indexPath.row]); 
    return myCell; 
} 
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
{ 
    print("Row Selected"); 
    NSLog("Row Selected"); 
} 

Ничто никогда не печатает действует как функция не вызывается. Однако я не понимаю, почему это нельзя назвать?

Любая помощь была бы принята с благодарностью!

UPDATE:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    selectGroceryTable.data = self; 
    selectGroceryTable.delegate = self; //gives error states you can not do this 

} 
+0

Вы реализовали selectGroceryTable.delegate = self? – bolnad

+0

Я получаю сообщение об ошибке при попытке сделать это .. см. Обновленный код, пожалуйста, – user5600884

+1

Возможно, потому, что вы не объявляли класс в соответствии с протоколом делегирования. Мы все были на вашем месте, и это трудно понять без какой-либо помощи, большие книги раннего ранчо Aaron Hilligas были действительно полезны для меня, когда я начинал, удачи! – bolnad

ответ

2

Есть несколько вещей, чтобы проверить в случаях, как это:

Во-первых, какой метод является didSelectRowAtIndexPath?

: Это метод UITableViewDelegate. Вы установили свой контроллер представления в качестве делегата в виде таблицы? Если нет, этот метод не будет вызван.

Во-вторых, вы абсолютно уверены, что подпись метода является идеальным сочетанием для метода из протокола? Единственное письмо не на месте, неправильный верхний/нижний регистр, неправильный параметр, и это другой метод и не будет вызван. он платит, чтобы скопировать подпись метода прямо из файла заголовка протокола, а затем заполнить тело, чтобы избежать незначительных опечаток с помощью методов делегирования.

Мне кажется, что ваша подпись метода правильная, поэтому мои деньги забывают установить диспетчер представлений в качестве делегата табличного представления.

+0

Я добавил код в мой исходный пост. Я устанавливаю table.data = self; Но когда я пытаюсь получить набор делегатов, я получаю возможность присвоить значение типа «ViewController» для ввода «UITableViewDelegate»? – user5600884

+0

Это было нашей проблемой. Тем не менее, я не смог сделать это с помощью функции onLoad() кода, но смог сделать это через создателя интерфейса пользовательского интерфейса. Я просто контролировал щелчок по таблице, а затем перетащил ее на оранжевую кнопку вверху. – user5600884

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

  • Нет связанных вопросов^_^