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/)
-   -   UIAlertView niet weg te krijgen (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/152851-uialertview-niet-weg-krijgen.html)

Bbuster 18-03-14 14:11

UIAlertView niet weg te krijgen
 
Hallo,

Ik wil in mijn app een popup venster laten tonen dat weg gaat op het moment dat ik dat wil in mijn code.

Ik heb vanalles geprobeerd wat op internet zou moeten werken maar krijg het niet voor elkaar.

In mijn viewController.h heb ik de volgende code:

Code:

@interface ViewController : UIViewController <ServiceConnectorDelegate>
{
    UIAlertView *Connection Popup
}

in de viewController.m heb ik dit:

Code:

- voidviewDidLoad
{
    UIAlertView *ConnectionPopup = [[UIAlertView alloc] initWithTitle:@"Titel" message: @"bericht" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
    [ConnectionPopup show];
}

Op internet staat overal dat onder de laatste regel ook nog [ConnectionPopup release] moet komen maar dan krijg ik de volgende fout: ARC forbids explicit message send of 'release'

Het popup venster wordt getoond.

Nu wil ik in een bepaalde methode dit popup venster laten verdwijnen. Alleen wil dit maar niet lukken.

Als ik debug zie ik dat de variable ConnectionPopup de waarde nil heeft...

Hoe kan dit? doe ik ergens iets fout?
Bedankt!

---------- Bericht automatisch samengevoegd op 18 maart 2014 om 14:56 ----------

Opgelost,

Ipv dit:

Code:

UIAlertView *ConnectionPopup = ...
moet dit gebruikt worden:

Code:

ConnectionPopup = ...

wubbe 07-04-14 00:52

Of je haalt de code uit de .h file weg. Je hebt een ivar aangemaakt, maar waarom?

En je maakt van ConnnectionPopup connectionpopup. Bij het programmeren is het gebruikelijk om instanties van classen met een kleine letter te laten beginnen.

(en programmeren is iets meer dan het van internet overtikken van voorbeelden ;))

kyle 15-04-14 11:42

Het lijkt me verstandiger om de declaratie van de instance variable uit de .h (header) file te halen, en deze in de .m file te plaatsen dmv een class extensie. Tenzij je een goede reden hebt om deze publiekelijk te maken. Dat lijkt me in het geval van een UIAlertView heel onwaarschijnlijk en misschien is het dan ook beter om überhaupt nog eens een keer goed na te denken over wat je nu precies met je UIAlertView wilt en of Apple de manier waarop jij een alertview wil gebruik wel tolereert. Het lijkt me heel onhandig allemaal.

Zoals wubbe al zegt, bij programmeren is het zeer gebruikelijk (eigenlijk normaal) om een instance variable of variable te laten beginnen met een kleine letter. ConnectionPopup is dus fout. Bij Objective-C code is het trouwens vrij normaal om het volgende 'woord' wel met een hoofdletter te schrijven. Dus ConnectionPopup wordt dan connectionPopup i.p.v. connectionpopup (is niet fout, maar die eerste is gebruikelijk). Misschien dat dit voor wat verwarring zorgde.

Apple stuurt al een aantal jaar aan op het gebruik van properties i.p.v. instance variables. Maar ik denk dat dit überhaupt iets te hoog gegrepen is. Zorg dat je basis goed is, niet alleen de kennis van de programmmeertaal maar ook algemene programmeer termen en methodes, voordat je aan iOS begint.

XIII 15-04-14 20:46

Citaat:

Oorspronkelijk geplaatst door Bbuster (Bericht 953866)
Nu wil ik in een bepaalde methode dit popup venster laten verdwijnen.

Dat kan met dismissWithClickedButtonIndex:animated:

Nikooos 16-04-14 09:18

Voglens mij waren we dat stadium al voorbij :D

XIII 16-04-14 16:59

Citaat:

Oorspronkelijk geplaatst door Nikooos (Bericht 956887)
Voglens mij waren we dat stadium al voorbij :D

Inclusief de Topic Starter?

Nikooos 17-04-14 08:58

Citaat:

Oorspronkelijk geplaatst door XIII (Bericht 956946)
Inclusief de Topic Starter?

Volgens zijn edit was het opgelost doordat hij gebruikt maakte van 2 verschillende variabelen. Dus ik ging er stiekem vanuit dat hij de functie die jij aangeeft al wel had gevonden. Maar het staat niet zo vermeld inderdaad. :)


Alle tijden zijn GMT +2. Het is nu 18:26.