Guys, how did I get in this thread?

—
Best,
Sergei Kvasov



> On Jan 20, 2015, at 12:39 AM, Michael McGlothlin <[email protected]> 
> wrote:
> 
> That attribute seems to be exactly what I needed. I hadn’t considered the 
> need to export it and didn’t see it suggested anywhere. I seem to not need to 
> include the constructor for the pointer if I have this constructor and it 
> appears the default reuseIdentifier is the same thing I was manually 
> assigning - the FullName of the cell type.
> 
> So I can drop all that and this simple class does the trick:
> 
> 
>>  public class SubtitleTableViewCell : UITableViewCell {
>>   [Export ( "initWithStyle:reuseIdentifier:" )]
>>   private SubtitleTableViewCell ( UITableViewCellStyle style, NSString 
>> reuseIdentifier ) : base ( UITableViewCellStyle.Subtitle, reuseIdentifier ) 
>> {}
>>  }
> 
> 
> 
> 
>> On 2015 01 19, at 05:22, Rolf Bjarne Kvinge <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Hi,
>> 
>> You don't have the initWithStyle:reuseIdentifier: constructor, try adding 
>> this:
>> 
>>     [Export ("initWithStyle:reuseIdentifier:")]
>>     public UITableViewCell (UITableViewCellStyle style, NSString 
>> reuseIdentifier) : base (style, reuseIdentifier)
>>     {
>>     }
>> 
>> to your class and see if it's called.
>> 
>> Rolf       
>> 
>> On Fri, Jan 16, 2015 at 6:56 PM, Michael McGlothlin 
>> <[email protected] <mailto:[email protected]>> wrote:
>> Apple's docs for UITableView dequeueReusableCellWithIdentifier:forIndexPath: 
>> clearly says that when a new cell must be created the 
>> initWithStyle:reuseIdentifier: constructor is called. This doesn't seem to 
>> happen with MonoTouch as it calls the IntPtr constructor. Mono's API docs 
>> for iOS don't say anything on the subject under either Classic or Unified. 
>> Articles and SO seem to agree that this is the behavior expected.
>> 
>> 
>> Thanks,
>> Michael McGlothlin
>> Sent from my iPhone
>> 
>> On Jan 15, 2015, at 3:03 AM, Rolf Bjarne Kvinge <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>>> 
>>> 
>>> On Wed, Jan 14, 2015 at 8:21 PM, Michael McGlothlin 
>>> <[email protected] <mailto:[email protected]>> wrote:
>>>  public class SubtitleTableViewCell : UITableViewCell {
>>>   public SubtitleTableViewCell () : this ( typeof ( SubtitleTableViewCell 
>>> ).FullName ) {
>>>   }
>>> 
>>> 
>>>   public SubtitleTableViewCell ( string reuseIdentifier ) : base ( 
>>> UITableViewCellStyle.Subtitle, reuseIdentifier ) {
>>>   }
>>> 
>>> 
>>>   protected SubtitleTableViewCell ( IntPtr handle ) : base ( handle ) {
>>>   }
>>>  }
>>> 
>>> 
>>> This is not a correct pattern, iOS will not call the constructors that set 
>>> the Subtitle constructors.
>>> 
>>> However I'm not sure what the correct code is; a quick google search 
>>> indicates that you'll need a constructor that takes an NSCoder, but that 
>>> might not be correct.
>>> 
>>> I recommend that you ask in the forums or on stackoverflow, that'll get 
>>> much more visibility to your question (few people read this mailing list 
>>> now).
>>> 
>>> Rolf
>>> 
>>>  
>>> 
>>> If I use a class like this then I get a cell of the default style. If I 
>>> don't pass the pointer to base ( handle ) then it uses the subtitle style.
>>> 
>>> 
>>> On Wed, Jan 14, 2015 at 12:55 PM, Rolf Bjarne Kvinge <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> Hi,
>>> 
>>> You should chain to the corresponding base constructor like this:
>>> 
>>> public MyTableViewCell (IntPtr handle) : base (handle)
>>> {
>>> ...
>>> }
>>> 
>>> if that doesn't work, something else is going wrong. Can you show your 
>>> MyTableViewCell code?
>>> 
>>> Rolf
>>> 
>>> On Wed, Jan 14, 2015 at 6:16 PM, Michael McGlothlin 
>>> <[email protected] <mailto:[email protected]>> wrote:
>>> In experimenting it seems you need an actual subclass to set the cell style 
>>> as you never manually call the cell constructor and there is no other way 
>>> to choose the style.
>>> 
>>> If I pass the handle to base ( handle ) it appears that the default 
>>> constructor, that configures the style and reuse identifier by passing 
>>> these to base ( style, reuseIdentifier ), never gets called?
>>> 
>>> I probably won't actually use the styles anyway but it doesn't seem to work 
>>> as I'd expect. Mostly trying to get a clearer picture of what is going on. 
>>> Since starting transitioning to Universal I've noticed several behaviors 
>>> that seem odd. Trying to determine if I'm doing something new, if things 
>>> changed, or if they're bugs.
>>> 
>>> I noticed yesterday that it is now ok for that special constructor to be 
>>> protected instead of public. It didn't work on one computer but did on the 
>>> other .. after the second finished updating Xamarin Studio then it worked 
>>> on both. So I guess it's actively being worked on?
>>> 
>>> 
>>> Thanks,
>>> Michael McGlothlin
>>> Sent from my iPhone
>>> 
>>> On Jan 14, 2015, at 10:49 AM, Jeff Stedfast <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>>> Hi Michael,
>>>> 
>>>> Hopefully one of the Xamarin.iOS devs can chime in, but the IntPtr handle 
>>>> that is passed to .ctors is the native object pointer.
>>>> 
>>>> If you don't pass it to base, then what happens is that the Xamarin.iOS 
>>>> runtime creates a new native instance.
>>>> 
>>>> My understanding is that you have this:
>>>> 
>>>> public MyTableViewCell (IntPtr handle) : base (handle)
>>>> {
>>>> ...
>>>> }
>>>> 
>>>> and that you are removing the call to base()...
>>>> 
>>>> You shouldn't be doing that afaik.
>>>> 
>>>> This .ctor is meant only to be used by the runtime itself and should not 
>>>> be invoked by your code (it doesn't sound like you are invoking it 
>>>> yourself, but just in case that wasn't obvious).
>>>> 
>>>> I'm not sure if that really helps answer your overall question, but 
>>>> hopefully it at least helps clarify things a little bit for you.
>>>> 
>>>> Jeff
>>>> 
>>>> On Wed, Jan 14, 2015 at 11:40 AM, Michael McGlothlin 
>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>> It appears that custom UITableViewCells must have a constructor that takes 
>>>> IntPtr for the automatic reuse to work but I can't see anywhere that says 
>>>> what this pointer is? It seems if I pass the pointer to the base that the 
>>>> cell doesn't work right but if I ignore the pointer it does work right?
>>>> 
>>>> Thanks,
>>>> Michael McGlothlin
>>>> Sent from my iPhone
>>>> _______________________________________________
>>>> MonoTouch mailing list
>>>> [email protected] <mailto:[email protected]>
>>>> http://lists.ximian.com/mailman/listinfo/monotouch 
>>>> <http://lists.ximian.com/mailman/listinfo/monotouch>
>>>> 
>>> 
>>> _______________________________________________
>>> MonoTouch mailing list
>>> [email protected] <mailto:[email protected]>
>>> http://lists.ximian.com/mailman/listinfo/monotouch 
>>> <http://lists.ximian.com/mailman/listinfo/monotouch>
>>> 
>>> 
>>> 
>>> 
>> 
> 
> _______________________________________________
> MonoTouch mailing list
> [email protected]
> http://lists.ximian.com/mailman/listinfo/monotouch

_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to