2016-03-23 23 views
-1

Uygulamanızın tablosuna yenileme özelliği özelliğini eklemek istiyorum. Şu anda YouTube'da here numaralı telefon rehberini takip ediyorum ve uygulamamın slaydı yenilemek için başlatırken SIGABRT hatasıyla karşılaşıyorum.iş parçacığı 1: Silmek için slayt kullanırken SIGABRT hatası

Benim Kodu: Herkes ben yanlış yapıyorum söyle olsaydı

// outlet - table view 
@IBOutlet weak var myTableView: UITableView! 


// outet - activity indicator 
@IBOutlet weak var spinner: UIActivityIndicatorView! 


// outlet - barbutton 
@IBOutlet weak var menuButton: UIBarButtonItem! 

// slide to refresh 

let refreshControl: UIRefreshControl = UIRefreshControl() 

// xml parser 
var myParser: NSXMLParser = NSXMLParser() 

// rss records 
var rssRecordList : [RssRecord] = [RssRecord]() 
var rssRecord : RssRecord? 
var isTagFound = [ "item": false , "title":false, "pubDate": false ,"link":false] 



// MARK - View functions 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 
    if self.revealViewController() != nil { 
     menuButton.target = self.revealViewController() 
     menuButton.action = "revealToggle:" 
     self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    } 


    // pull to refresh 
    refreshControl.addTarget(self, action: "uiRefreshControlAction:", forControlEvents: UIControlEvents.ValueChanged) 
    self.myTableView.addSubview(refreshControl); 


    func uiRefreshControlAction() { 
     self.myTableView.reloadData() 
    } 

    // set tableview delegate 
    self.myTableView.dataSource = self 
    self.myTableView.delegate = self 
} 

bu harika olurdu. Ben Xcode için yeni ve bu benim ilk uygulama, bu yüzden tamamen yanlış bir şey yaptım, bu yüzden.

+1

https://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1 – dan

cevap

0

func uiRefreshControlAction'u sadece istediğiniz yere yerleştirmeye gidemezsiniz. Kodunuzdaki öğelerin konumları, anlamına gelen anlamına gelir. Swift öğrenin. Nasıl çalıştığını öğrenin.

Bu sırada size bunun cevabını anlatacağım. Buna

override func viewDidLoad() { 
    super.viewDidLoad() 
    // ... 
    func uiRefreshControlAction() { 
     self.myTableView.reloadData() 
    } 
    // ... 
} 

: bu yapıyı değiştirme Buna

action: "uiRefreshControlAction:" 

:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // ... 
} 
func uiRefreshControlAction() { 
    self.myTableView.reloadData() 
} 

Sonra bunu değiştirmek

action: "uiRefreshControlAction" 

Son olarak, Xcode 7.3 güncelleme nerede bu bir çeşit hata senin için imkansız olacak yapmak! Kodunuzda

+0

Devam etmeden önce bunu muhtemelen öğrenmeliyim. Girdiğin için teşekkürler, ancak çalışmayanlar değişmedi, bunu değiştirdikten sonra RSS feed'im yüklenmedi ve yenileme için slayt gitti. –

+0

Başkaları sizin kodunuzla aynı şeyi yaptınız mı? sadece 'viewDidLoad' işlevini kaldırın ve onu – HardikDG

+0

@matt'ın dışına yerleştirin. Düzenlemenizi okuduktan sonra başka hata yok. Bu gece işim bittiğinde emin olacağım. Tek şey şu ki, spinner durmayacak. Bu, RSS beslemesinden bir yanıt alınmadığı için mi yoksa hızlı bir şekilde, hızlı bir şekilde, beslemeyi yeniledikten sonra durması gereken bir şey yapmam gerekiyor mu? –

1

Eğer

// pull to refresh 
refreshControl.addTarget(self, action: "uiRefreshControlAction", forControlEvents: UIControlEvents.ValueChanged) 
self.myTableView.addSubview(refreshControl); 

için bu fonksiyonu Herhangi bir parametre değildir gibi o

// pull to refresh 
refreshControl.addTarget(self, action: "uiRefreshControlAction:", forControlEvents: UIControlEvents.ValueChanged) 
self.myTableView.addSubview(refreshControl); 

Değiştir yazdım ama eklemiş ':' işaret aksiyon adına

işlevine sahip olacaksınız Yani tam yeni kodunuz şu gibi olacak

// MARK - View functions 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 
    if self.revealViewController() != nil { 
     menuButton.target = self.revealViewController() 
     menuButton.action = "revealToggle:" 
     self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    } 

    // pull to refresh 
    refreshControl.addTarget(self, action: "uiRefreshControlAction", forControlEvents: UIControlEvents.ValueChanged) 
    self.myTableView.addSubview(refreshControl); 

    // set tableview delegate 
    self.myTableView.dataSource = self 
    self.myTableView.delegate = self 
} 

func uiRefreshControlAction() { 
    self.myTableView.reloadData() 
} 
+0

İyi, ama onun 'func'unu bir yöntem yerine yerel olarak yazdığı gerçeğini kaçırıyorsunuz. – matt

+0

@matt Güncelleme için teşekkürler, cevabınız cevabınızdaki uygun cevabı alabileceği her şeyi kapsadığı için – HardikDG

+0

Cevabınızı yine de destekledim. Buna çok katkıda bulundun! – matt

İlgili konular