iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   UIButton, addTarget naar ander object dan "self" (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/79585-uibutton-addtarget-naar-ander-object-self.html)

celaeno2 08-12-10 19:16

UIButton, addTarget naar ander object dan "self"
 
Stel je hebt een UIBUtton *button en je wil daar een actie aan koppelen naar een method in een ander object, in plaats van "self".

Met andere woorden: Je hebt een ViewController, van waaruit een object wordt aangeroepen (bijv een UITableViewCell met een UIButton) en als de button wordt ingedrukt moet er een method "klik:" worden aangeroepen in de viewController.
Code:

[button addTarget:anderObject action:@selector(klik:) forControlEvents:UIControlEventTouchUPInside];
Wat moet er precies in "anderObject" staan? Dat zou toch simpel moeten zijn, maar ik kan het nergens vinden...

Iemand een idee??

Geno 08-12-10 23:39

In dit geval gebruik je self, omdat de method gebruikt wordt icm een UIButton.

Met de action: method geef je aan wat de button moet doen. In dit geval, als iemand op de button drukt, wordt klik: method aangesproken.

Dus als de knop iets moet doen, moet je klik: method instellen. Bv. zo:

- (void)klik: (id)sender
{
// wat je button moet doen
}

(id)sender is niet nodig als argument, maar ik vind het altijd prettig om aan te geven welke methods voor de interface worden gebruikt.

In de documentatie staat dat addTarget: een (id) als argument heeft. Dat betekent dat je elk object, wat kan reageren op deze method, kan gebruiken (alles wat van UIControl class afstamt).

TUX2K 10-12-10 14:35

Nou waar jij anderObject hebt staan moet een instantie pointer zijn naar het andere object.

Dus als jij in de viewcontroller een andere viewcontroller hebt ja die dus gewoon daar neer zetten.

celaeno2 11-12-10 21:20

Bedankt voor de reacties :)

Alleen moet je dan dus denk ik wel een nieuwe instantie van je viewcontroller maken. iK vroeg me eigenlijk ook af of het mogelijk was om het target van de UIButton te zetten op een al eerder gemaakte instantie van een object (bijv viewcontroller).

Ik wilde vanuit een ander object de ABPeoplePickerNavigationController (wie verzint dat soort rare namen pffff haha) aanroepen zodat dat ding opent in de viewcontroller, maar heb dat nu gedaan door met hittest de gegevens van het touch object naar de viewcontroller te sturen, wat denk ik ook een betere manier is :)


Alle tijden zijn GMT +2. Het is nu 06:31.