2014-12-10 2 views
3

Я новичок в разработке IOS/IOX. Я попробовал много сайтов для загрузки данных в таблицу на OSX swift с помощью NSTableView. Но все было неудачей. Процедуру я сделал, отсылая View-Based NSTableView in Swift - How toЗагрузить данные в NSTableView в swift

  1. Перетащите и падает на порядок в NSTableView, который прекрасно видел, когда я запускаю код.
  2. Выбранный первый столбец и дал идентификатор, как «Список» после установки количества столбцов 1
  3. В appdelegate.swift я вставленного в

    class AppDelegate: NSObject, NSApplicationDelegate,NSTableViewDataSource,NSTableViewDelegate { 
    
        func applicationDidFinishLaunching(aNotification: NSNotification?) { 
    
        } 
    
        func applicationWillTerminate(aNotification: NSNotification?) { 
    
        } 
    
        func numberOfRowsInTableView(aTableView: NSTableView!) -> Int { 
    
         println("reached 1") 
         return 10 
        } 
    
        func tableView(tableView: NSTableView, viewForTableColumn: NSTableColumn, row: Int) -> NSView { 
    
         println("reached 2") 
    
         var cell = tableView.makeViewWithIdentifier("List", owner: self) as NSTableCellView 
    
         cell.textField.stringValue = "Hey, this is a cell" 
    
         return cell 
    
        } 
    } 
    
  4. Затем я попытался установить делегат и источник данных как Appdelegate для представления таблицы, выбрав таблицу и указав на «App Delegate» в «Application Scene». Но это не связывая

  5. Когда я запустить программу, таблица не была загружена клетками

Любая помощь очень ценится.

+1

Есть так много (простых) примеров. Я знаю, что сложно со всеми этими подключениями, но если вы возьмете пример, он должен довести вас дальше. Просто нашел это при первом щелчке: http://www.knowstack.com/swift-nstableview-sample-code/ –

+0

@ThomasKilian в этом примере я застрял в «Установите AppDelegate как делегат и источник данных для представления таблицы», а не способный работать до тех пор, пока я не удалю "@IBOutlet var window: NSWindow" & "@IBOutlet var myTableView: NSTableView". – Abin

+0

Вам нужно соединить их в построителе интерфейса. Перетащите Ctrl-click из представления в объект AppDelegate (из браузера с левой стороны - это безопаснее). Это покажет возможные соединения. –

ответ

0
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? 
{ 
    if tableView.identifier=="tableViewIdentifier" { 

      let cellView = tableView.makeViewWithIdentifier("List", owner: self) as! NSTableCellView 
      cellView.textField?.stringValue = "Hey, this is a cell" 
      return cellView 
     } 
    return nil 
    } 

идентификатор набора для Tableview из отброшенной таблицы также установить идентификатор столбца таблицы, установить делегат и источник данных к контроллеру вида, в котором таблица содержится.

0

Самый простой способ - выбрать вид таблицы в XIB-файле, а затем на панели «Утилиты» справа выбрать третий значок справа (стрелка, указывающая справа). Также убедитесь, что вы показываете схему документа, щелкнув значок в левом нижнем углу окна Interface Builder. На панели «Утилиты» вы можете просто перетащить из круга делегата и источника данных в AppDelegate в контуре документа.

0

В вашем случае, при использовании раскадровки, вы должны сделать свой контроллер просмотра источником данных и делегировать его для представления в таблице, потому что они содержатся в одной сцене. Сам класс называется ViewController в шаблонах проектов Xcode.

Итак, просто переместите код из делегата приложения, чтобы просмотреть контроллер и соединить все вещи в раскадровке.

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