<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Commenti a: Come creare un proprio protocollo con delegato</title>
	<atom:link href="http://www.undolog.com/2010/02/10/come-creare-un-proprio-protocollo-con-delegato/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.undolog.com/2010/02/10/come-creare-un-proprio-protocollo-con-delegato/</link>
	<description>Research &#38; Development  Blog</description>
	<lastBuildDate>Thu, 09 Feb 2012 11:24:28 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<item>
		<title>Di: Marco</title>
		<link>http://www.undolog.com/2010/02/10/come-creare-un-proprio-protocollo-con-delegato/#comment-5873</link>
		<dc:creator>Marco</dc:creator>
		<pubDate>Thu, 02 Feb 2012 21:54:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.undolog.com/?p=2896#comment-5873</guid>
		<description>Ti ringrazio moltissimo, mi hai illuminato :D
ho risolto impostando
[cc_objc]
//OptionViewController.m
- (void)viewDidLoad{
....
//setto il delegato per il restart del timer
    NSArray *viewControllers = self.tabBarController.viewControllers;
    self.timerHandlerDelegate = [viewControllers objectAtIndex:0];
}
[/cc_objc]

Ora funziona tutto!
grazie mille!</description>
		<content:encoded><![CDATA[<p>Ti ringrazio moltissimo, mi hai illuminato <img src='http://www.undolog.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
ho risolto impostando</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #11740a; font-style: italic;">//OptionViewController.m</span><br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>viewDidLoad<span style="color: #002200;">&#123;</span><br />
....<br />
<span style="color: #11740a; font-style: italic;">//setto il delegato per il restart del timer</span><br />
&nbsp; &nbsp; <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span style="color: #400080;">NSArray</span></a> <span style="color: #002200;">*</span>viewControllers <span style="color: #002200;">=</span> self.tabBarController.viewControllers;<br />
&nbsp; &nbsp; self.timerHandlerDelegate <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>viewControllers objectAtIndex<span style="color: #002200;">:</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#93;</span>;<br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>Ora funziona tutto!<br />
grazie mille!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Di: Giovambattista Fazioli</title>
		<link>http://www.undolog.com/2010/02/10/come-creare-un-proprio-protocollo-con-delegato/#comment-5872</link>
		<dc:creator>Giovambattista Fazioli</dc:creator>
		<pubDate>Thu, 02 Feb 2012 19:59:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.undolog.com/?p=2896#comment-5872</guid>
		<description>&lt;b&gt;@Marco:&lt;/b&gt; Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab controller, quest&#039;ultimo detiene la lista di tutti i view controller. La questione dev&#039;essere letta in questi termini: il view controller option chiede ad un altro controller di eseguire un&#039;operazione (attivare o disattiva un timer). Il view controller option è &quot;figlio&quot;, come gli altri, del tab controller. È dunque più corretto che il messaggio vada dal view controller option verso il tab controller che a sua volta smisterà il messaggio a chi di dovere. Il tab view controller conosce tutti i suoi view controller, quindi può inviare un messaggio a chiunque. Il view controller option conosce il suo tab controller per definizione.
Se ho tempo cercherò di portare un esempio da codice ma penso di averti dato tutte le info necessarie anche per procedere da solo. Fammi sapere se mi sono perso qualcosa per strada...</description>
		<content:encoded><![CDATA[<p><b>@Marco:</b> Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab controller, quest&#8217;ultimo detiene la lista di tutti i view controller. La questione dev&#8217;essere letta in questi termini: il view controller option chiede ad un altro controller di eseguire un&#8217;operazione (attivare o disattiva un timer). Il view controller option è &#8220;figlio&#8221;, come gli altri, del tab controller. È dunque più corretto che il messaggio vada dal view controller option verso il tab controller che a sua volta smisterà il messaggio a chi di dovere. Il tab view controller conosce tutti i suoi view controller, quindi può inviare un messaggio a chiunque. Il view controller option conosce il suo tab controller per definizione.<br />
Se ho tempo cercherò di portare un esempio da codice ma penso di averti dato tutte le info necessarie anche per procedere da solo. Fammi sapere se mi sono perso qualcosa per strada&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Di: Marco</title>
		<link>http://www.undolog.com/2010/02/10/come-creare-un-proprio-protocollo-con-delegato/#comment-5867</link>
		<dc:creator>Marco</dc:creator>
		<pubDate>Thu, 02 Feb 2012 10:09:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.undolog.com/?p=2896#comment-5867</guid>
		<description>Scusa lo spam.. ho notato che c&#039;è un errore..
ecco la correzione

[cc_objc]
/** PrimaClasse.h **/
#import &quot;OptionViewController.h&quot;

@interface PrimaClasse: NSObject
[/cc_objc]</description>
		<content:encoded><![CDATA[<p>Scusa lo spam.. ho notato che c&#8217;è un errore..<br />
ecco la correzione</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #11740a; font-style: italic;">/** PrimaClasse.h **/</span><br />
<span style="color: #6e371a;">#import &quot;OptionViewController.h&quot;</span><br />
<br />
<span style="color: #a61390;">@interface</span> PrimaClasse<span style="color: #002200;">:</span> <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/"><span style="color: #400080;">NSObject</span></a></div></td></tr></tbody></table></div>
]]></content:encoded>
	</item>
	<item>
		<title>Di: Marco</title>
		<link>http://www.undolog.com/2010/02/10/come-creare-un-proprio-protocollo-con-delegato/#comment-5866</link>
		<dc:creator>Marco</dc:creator>
		<pubDate>Thu, 02 Feb 2012 10:07:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.undolog.com/?p=2896#comment-5866</guid>
		<description>dimenticato.. in [cci]OptionViewController[/cci] il [cci]@syntetize[/cci] del delegato l&#039;ho messo :D</description>
		<content:encoded><![CDATA[<p>dimenticato.. in <code class="codecolorer text default"><span class="text">OptionViewController</span></code> il <code class="codecolorer text default"><span class="text">@syntetize</span></code> del delegato l&#8217;ho messo <img src='http://www.undolog.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Di: Marco</title>
		<link>http://www.undolog.com/2010/02/10/come-creare-un-proprio-protocollo-con-delegato/#comment-5865</link>
		<dc:creator>Marco</dc:creator>
		<pubDate>Thu, 02 Feb 2012 10:06:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.undolog.com/?p=2896#comment-5865</guid>
		<description>Ciao, complimenti anche da parte mia per l&#039;articolo.. ho una perplessità da esporti..
mi trovo nel caso in cui sono in un tab controller, ogni viewController ha una classe dedicata

tab1: PrimoController
tab2: OptionController

quello che voglio fare io è poter stoppare e startare un timer che sta sul PrimoController dall&#039;OptionController, questo timer lo posso anche startare e stoppare dal primo controller con 2 metodi

[cc_objc]
- (void)startTimer{
// NSTimer bla bla bla
}
- (void)stopTimer{
// timer invalidate bla bla bla
}
[/cc_objc]

Io ho fatto così:
in [cci]OptionViewController.h[/cci] ho creato

[cc_objc]
@protocol OptionViewControllerDelegate 
@required
- (void)timerActionRestart;
@end

@interface OptionViewController : UITableController 

@property (weak, nonatomic) id  timerHandlerDelegate;

@end
[/cc_objc]

in [cci]OptionViewController.m[/cci] ho:

[cc_objc]
- (void) metodoGestoreTimer
{
 if (timerHandlerDelegate != nil){
   NSLog(@&quot;timerActionRestar&quot;);
   [self.timerHandlerDelegate timerActionRestart];
 }

}
[/cc_objc]

E fin qui tutto ok.. Andando invece nella prima classe la situazione è la seguetne:

[cc_objc]
/** PrimaClasse.h **/

#import &quot;OptionViewController.h&quot;
    
@interface OptionViewController : NSObject 

/** PrimaClasse.m **/
- (void)timerActionRestart
{
  // Timer stop 
  // Timer start
  NSLog(&quot;timer restarting&quot;);
}
[/cc_objc]

Ho capito che devo settare il delegato ma essendo 2 classi già inizializzate, non so come fare!
Hai idea?

Ora come ora noto che [cci]metodoGestoreTimer[/cci] viene richiamato ma non logga nulla in quanto fallisce il controllo sull&#039;if.. 

Grazie mille e ancora complimenti per il blog! :D</description>
		<content:encoded><![CDATA[<p>Ciao, complimenti anche da parte mia per l&#8217;articolo.. ho una perplessità da esporti..<br />
mi trovo nel caso in cui sono in un tab controller, ogni viewController ha una classe dedicata</p>
<p>tab1: PrimoController<br />
tab2: OptionController</p>
<p>quello che voglio fare io è poter stoppare e startare un timer che sta sul PrimoController dall&#8217;OptionController, questo timer lo posso anche startare e stoppare dal primo controller con 2 metodi</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>startTimer<span style="color: #002200;">&#123;</span><br />
<span style="color: #11740a; font-style: italic;">// NSTimer bla bla bla</span><br />
<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>stopTimer<span style="color: #002200;">&#123;</span><br />
<span style="color: #11740a; font-style: italic;">// timer invalidate bla bla bla</span><br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>Io ho fatto così:<br />
in <code class="codecolorer text default"><span class="text">OptionViewController.h</span></code> ho creato</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #a61390;">@protocol</span> OptionViewControllerDelegate <br />
@required<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>timerActionRestart;<br />
<span style="color: #a61390;">@end</span><br />
<br />
<span style="color: #a61390;">@interface</span> OptionViewController <span style="color: #002200;">:</span> UITableController <br />
<br />
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>weak, nonatomic<span style="color: #002200;">&#41;</span> <span style="color: #a61390;">id</span> &nbsp;timerHandlerDelegate;<br />
<br />
<span style="color: #a61390;">@end</span></div></td></tr></tbody></table></div>
<p>in <code class="codecolorer text default"><span class="text">OptionViewController.m</span></code> ho:</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> metodoGestoreTimer<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>timerHandlerDelegate <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp;NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;timerActionRestar&quot;</span><span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp;<span style="color: #002200;">&#91;</span>self.timerHandlerDelegate timerActionRestart<span style="color: #002200;">&#93;</span>;<br />
&nbsp;<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>E fin qui tutto ok.. Andando invece nella prima classe la situazione è la seguetne:</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #11740a; font-style: italic;">/** PrimaClasse.h **/</span><br />
<br />
<span style="color: #6e371a;">#import &quot;OptionViewController.h&quot;</span><br />
&nbsp; &nbsp; <br />
<span style="color: #a61390;">@interface</span> OptionViewController <span style="color: #002200;">:</span> <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/"><span style="color: #400080;">NSObject</span></a> <br />
<br />
<span style="color: #11740a; font-style: italic;">/** PrimaClasse.m **/</span><br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>timerActionRestart<br />
<span style="color: #002200;">&#123;</span><br />
&nbsp; <span style="color: #11740a; font-style: italic;">// Timer stop </span><br />
&nbsp; <span style="color: #11740a; font-style: italic;">// Timer start</span><br />
&nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;timer restarting&quot;</span><span style="color: #002200;">&#41;</span>;<br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>Ho capito che devo settare il delegato ma essendo 2 classi già inizializzate, non so come fare!<br />
Hai idea?</p>
<p>Ora come ora noto che <code class="codecolorer text default"><span class="text">metodoGestoreTimer</span></code> viene richiamato ma non logga nulla in quanto fallisce il controllo sull&#8217;if.. </p>
<p>Grazie mille e ancora complimenti per il blog! <img src='http://www.undolog.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

