【问题标题】:Expected Declaration Error TableView [closed]预期的声明错误 TableView [关闭]
【发布时间】:2017-05-11 20:34:55
【问题描述】:

我正在开发一个应用程序,并且想要创建一个删除选项,您可以在其中向右滑动并单击删除以删除一行。我收到“预期声明”错误,我已尝试修复它大约 20 分钟。

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    var StoredValues = Values()
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        self.performSegue(withIdentifier: "meunSegue", sender: self)

        func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            _ = segue.destination as! SecondViewController
        }
        class SecondViewController: UIViewController {

            var recievedData = ""
            override func viewDidLoad() {
                super.viewDidLoad()
                print(recievedData)
            }
        }
    }
    - (void)tableView:(UITableView *)tableView committEditStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath: (NSIndexPath *)indexPath {if (editingStyle == UITableViewCellEditingStyleDelete) {
    [maTheData removeObjectAtIndex: [indexPath row]];
    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];


    }
}

【问题讨论】:

  • 你的代码全乱了。你有一个 ObjC 函数(缺少右括号)与 Swift 和一个函数以及另一个函数中的一个类混合。你也忘了告诉我们错误在哪一行,我们不是编译器。
  • 对不起,错误在这些行中
  • - (void)tableView:(UITableView *)tableView committEditStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath: (NSIndexPath *)indexPath {if (editingStyle == UITableViewCellEditingStyleDelete) { [maTheData removeObjectAtIndex: [indexPath row]] ;

标签: ios swift uitableview tableview tablecell


【解决方案1】:

你在混

- (void)tableView:(UITableView *)tableView committEditStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath: (NSIndexPath *)indexPath {if (editingStyle == UITableViewCellEditingStyleDelete) {
[maTheData removeObjectAtIndex: [indexPath row]];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

这看起来像 Objective C,而你的其他课程是用 Swift 编写的。当您使用多种语言时,很容易混淆,但编译器在这种情况下可以很好地帮助您。

【讨论】:

    【解决方案2】:

    方法里面有方法而不是调用方法。换句话说,funcfunc 内。更进一步,我不知道你怎么可能把class 放在func 里面?正如 Sandeep 所提到的,您还将Objective CSwift 混为一谈。

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            self.performSegue(withIdentifier: "meunSegue", sender: self)
    
            func prepare(for segue: UIStoryboardSegue, sender: Any?) {
                _ = segue.destination as! SecondViewController
            }
            class SecondViewController: UIViewController {
    
                var recievedData = ""
                override func viewDidLoad() {
                    super.viewDidLoad()
                    print(recievedData)
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      相关资源
      最近更新 更多