在Swift中检测并删除空白tableViewCell

时间:2016-10-02 12:13:20

标签: swift uitableview nsuserdefaults

我在我的项目中运行了两个tableView。我已成功地在两个tableView之间传递数据,并使用segue将其作为tableView数组保存到我的第二个tableView中。我有另一个函数使用tabBar按钮连接我的第二个tableview。每当我按下tabBar按钮时,它会在indexPath:0处创建一个空白的tableViewCell。我能理解为什么会这样,但我不知道该如何制止。我的代码在下面

的AppDelegate:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    let defaultValues = ["NewArray": [String]()]
    UserDefaults.standard.register(defaults: defaultValues)

    return true
    }

我的第二个VC

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

    let defaults = UserDefaults.standard
    newArray = defaults.array(forKey: "NewArray") as! [String]
   // newArray.append(newItem)
    newArray.insert(newItem, at: 0)
    defaults.set(newArray, forKey: "NewArray")
    self.favTableView?.reloadData()
   }

提前致谢...

1 个答案:

答案 0 :(得分:2)

实际上最简单的解决方案是检查newItem是否为空,因为如果视图是从segue呈现的,则(非空)字符串将传递给newItem属性。

override func viewDidLoad() {
  super.viewDidLoad()

  let defaults = UserDefaults.standard
  newArray = defaults.array(forKey: "NewArray") as! [String]
  // newArray.append(newItem)
  if !newItem.isEmpty {
    newArray.insert(newItem, at: 0)
    defaults.set(newArray, forKey: "NewArray")
  }
  self.favTableView?.reloadData()
}